Esercizio 1 void elimina (elem*& L, char c) { if (L== NULL) return; elem *q = L, *p; while(q != NULL){ for( ; q!= NULL && q->info!=n; q=q->pun) p = q; if (q==NULL) return; // elimino elemento puntato da q if (q == L) { L = L->pun; delete q; q=L; } else { p->pun = q->pun; delete q; q=p->pun; } } } void modificaLista(elem*& p, const char* nomefile) { ifstrem in(nomefile); if (!in) return; char v; while (in >> v) elimina(p, v); } Esercizio 2 char* creaMatrice(char* M, int n) { int dim = 2*n; char* M1 = new char [dim*dim]; for (int i=0; i< dim; i++) for (int j=0; j< dim;j++) M1[i*dim +j] = M[(i%n)*n + (j%n)]; ofstream outf("output.txt"); for (int i=0; i< dim; i++) { for (int j=0; j< dim;j++) outf << M1[i*dim+j]; outf << endl; } return M1; } Esercizio 3 Parte superiore: // N/2 -i bianchi // (i*2) +1 X Parte inferiore: // i - N/2 bianchi // (N-1-i) *2 +1 X void stampaRombo(int N, int i=0) { if (i==N) return; if (i < N/2) { for (int h=0; h < (N/2-i); h++) cout << ' '; for (int k=0; k< (2*i+1); k++) cout << 'X'; } if (i == N/2) for (int k=0; k< N; k++) cout << 'X'; if (i > N/2){ for (int h=0; h < (i - N/2); h++) cout << ' '; for (int k=0; k < (N-1-i)*2 +1; k++) cout << 'X'; } cout << endl; stampaRombo(N, i+1); } Esercizio 4 1) -61 2) Il programma come prima cosa effettua lo shift a sinistra di 4 posizioni del naturale 3 (0000-0011), dopo averlo caricato in AH. A questo punto il registro AH conterrą 0011-0000, ossia il naturale 48, che corrisponde al codice ascii di 0. Pertanto la prima CALL output stamperą a video il carattere '0'. Successivamente AH viene shiftato a destra di 4, riottenendo il valore 3 di partenza (ossia il naturale 3). A questo punto si entra nel ciclo, dopo che EBX punta alla prima cifra del proprio numero di matricola e EDX all'ultima, e se ne confrontano i contenuti in memoria. Appena sono diversi si salta a lab1, dove viene stampato a video il carattere 'N'. Altrimenti si incrementa EBX e si decrementa EDX, e si confrontano di nuovo. Alla fine, se non si e' mai saltato a lab1 viene mostrato a video il carattere 'S', in quanto esso corrisponde all'esadecimale 0x53. Riassumendo il programma visualizza 0N per gli studenti che hanno numero di matricola non palindromo e 0S per quelli che l'hanno palindromo (esempi: 487652 -> '0N', 480084 -> '0S').