Prova scritta di Programmazione ad oggetti – 22 gennaio 2002

Ordine delle domande, nomi di classi, funzioni, variabili, dettaglio dei dati (valori numerici e stringhe) erano diversi per ciascuno studente.

ESERCIZIO 1

#include <iostream>

class H {
 int i;
public:
 H(int ii=1) : i(ii) {};
 int valore() { return ++i; };
};

class X {
 H h;
public:
 X(int ii=3) : h(ii) {};
 int valore() { return h.valore(); };
};

int main() {
 X x1(2);
 X* x2 = new X;
 cout << x1.valore() + x2->valore() << endl ;
}

 

ESERCIZIO 2

#include <iostream>
#include <string.h>

char * f(char *q) {
 char *w = new char [strlen(q)+5];
 strcpy(w,q);
 return w;
}

int main() {
 char d[]="nome cognome";
 char * z = f(d);
 cout << strlen(z) << endl;
}

 

ESERCIZIO 3

#include <iostream>

class X {
 int i, j, k;
public:
 X() { i = j = k = 6; };
 X(int ii, int jj=7, int kk=8) : i(ii), j(jj), k(kk) {};
 int f() {return i - j - k;};
};

int main() {
 X x1(6, 8, 10);
 X x2(6, 8);
 X x3(6);
 X* x4 = new X;
 cout << x1.f() + x2.f() + x3.f() + x4->f() << endl ;
}

 

ESERCIZIO 4

#include <iostream>

class Z {
 static int i;
public:
 Z(int ii=10) {i++;};
 int valore() { return i; };
};

int Z::i=0;

int main() {
 Z z1(2);
 Z* z2 = new B(2);
 Z z3;
 Z* Z4 = new Z;
 cout << Z4->valore() << endl ;
}

 

ESERCIZIO 5

#include <iostream>

int f(int& b, int n) {    // attenzione alla logica degli
 return (++b) + (++n) ;  // operatori di pre/post-incremento
}

int main() {
 int x(18), c(21);
 int z = f(x,c);
 cout << z + x + c << endl;
}