Soluzione prova scritta 12 giugno2013 ESERCIZIO 1 void inserisci(elem*& p0, int n){ elem *p, *q; for (p=p0; p!=NULL && p->info < n; p=p->pun) q=p; if (p==p0) { p0= new elem; p0->info =n; p0->pun = p; } else { q->pun = new elem; q = q->pun; q->info = n; q->pun = p; } } elem* nuovalista(elem*l1, elem*l2) { elem * p= NULL; while ((l1!=NULL) && (l1->pun != NULL))){ inserisci(p, l1->pun->info); l1=l1->pun->pun; } while (l2!=NULL) { inserisci(p, l2->info); l2=l2->pun; if (l2 != NULL) l2= l2->pun; } return p; } ESERCIZIO 2 char* costruisci(const char *nome) { int dim; char * mat; ifstream in (nome); if (!in) dim = 1; else { in >> dim; if (!in || dim <=0) dim =1; } mat = new char[dim*dim]; for (int (i=0, i=i) && (j<=n-1-i)) mat[i*dim +j] = '1'; else mat[i*dim +j] = '-'; } else { if ((j>=n-i-1) && (j<=i)) mat[i*dim +j] = '1'; else mat[i*dim +j] = '-'; } } return mat; } ESERCIZIO 3 int conta (elem*l, int n){ if (l==NULL) return 0; if (strln(l->nome) > n) return 1 + conta (l->pun, n); else return conta (l->pun, n) } ESERCIZIO 4 1) -73 -> 10110111 2) Detto AN il codice asci della cifra meno significativa del proprio numero di matricola, l'algoritmo sottra il codice ascii di zero per estrarre tale numero N. Poi moltiplica N*4 (mediante lo shift a sinistra) e ci aggiunge 12. Il risultato viene mostrato a video come numero esadecimale. Di tale numero naturale viene fornita la cifra ottale della 5a,4a e 3a cifra iniziando da sinistra. Le due uscite a video per ciascun numero N sono riportate nella seguente tabella. N HEX Decimale finale ----------------------------------------------- 0, 0*4+12=12 ->0x0C, 000-011-00, ->3 1, 1*4+12=16 ->0x10, 000-100-00, ->4 2, 2*4+12=20 ->0x14, 000-101-00, ->5 3, 3*4+12=24 ->0x18, 000-110-00, ->6 4, 4*4+12=28 ->0x1C, 000-111-00, ->7 5, 5*4+12=32 ->0x20, 001-000-00, ->0 6, 6*4+12=36 ->0x24, 001-001-00, ->1 7, 7*4+12=40 ->0x28, 001-010-00, ->2 8, 8*4+12=44 ->0x2C, 001-011-00, ->3 9, 9*4+12=48 ->0x30, 001-100-00, ->4 In pratica preso il numero N, viene stampato N*4+12 e successivamente: N+3 se 0<=N<=4 e N-5 se 5<=N<=9