Data la seguente funzione che inizializza i valori di un array bi-dimensionale “matrice”:
#define N 5 void inizializza() { int matrice[N][N]; int riga, colonna; for(riga=0; riga < N; riga++) { for(colonna=0; colonna < N; colonna++) { if(riga == colonna) matrice[riga][colonna]=1; else if(riga+colonna == N-1) matrice[riga][colonna]=1; else if(riga < colonna) matrice[riga][colonna]=0; else matrice[riga][colonna]=matrice[colonna][riga]; } } for(riga=0; riga < N; riga++) { for(colonna=0; colonna < N; colonna++) printf("%d ", matrice[riga][colonna]); printf("\n"); } }Indicare quale tra le seguenti configurazioni vengono stampate dalla procedura "inizializza".
Risposte:
- 1 1 1 1 1
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
1 1 1 1 1- 1 0 0 0 1
0 1 0 1 0
0 0 1 0 0
0 1 0 1 0
1 0 0 0 1- 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 1 0 0 0
1 0 0 0 0- 1 0 0 0 0
0 1 0 0 0
0 0 1 0 0
0 0 0 1 0
0 0 0 0 1
Soluzione: b.
Il primo doppio for() compila la tabella
- matrice[r, c] <-- 1, per r=c, diagonale principale
- matrice[r, c] <-- 1, per r+c=4, diagonale secondaria
- matrice[r, c] <-- 0, altrimenti
Il secondo doppio for() la visualizza.