Si consideri il seguente frammento di codice:
void esegui(int M[][5], int C, int R1, int R2) { int i; for(i=0; i < C; i++) M[R1][i]=M[R1][i]+M[R2][i]; } main() { int i, M[5][5]; for(i=0; i < 2; i++) esegui(M, 5, i, 3); }La matrice M inizialmente contiene tutti 1 nella prima riga, tutti 2 nella seconda riga e cosi via.
Indicare il contenuto della matrice M al termine del programma.Risposte:
- 5 5 5 5 5
6 6 6 6 6
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5- 1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5- 5 5 5 5 5
4 4 4 4 4
3 3 3 3 3
2 2 2 2 2
1 1 1 1 1- 1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Soluzione: a.
La situazione iniziale è
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
Dopo la chiamata
esegui(M, 5, 0, 3);
esegue
for(i=0; i < 5; i++) M[0][i]=M[0][i]+M[3][i];
e la matrice diventa
5 5 5 5 5
2 2 2 2 2
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5
La seconda e ultima chiamata
esegui(M, 5, 1, 3);
esegue
for(i=0; i < 5; i++) M[1][i]=M[1][i]+M[3][i];
e la matrice diventa
5 5 5 5 5
6 6 6 6 6
3 3 3 3 3
4 4 4 4 4
5 5 5 5 5