Si consideri il seguente programma:
#include#define DMAX 5 void ES2(int M[][DMAX], int R, int C) { int I, K; int V[DMAX]; for(I=0; I < R; I++) V[I]=M[I][0]; for(I=0; I < C-1; I++) for(K=0; K < R; K++) M[K][I]=M[K][I+1]; for(I=0; I < R; I++) M[I][C-1]=V[I]; } int main () { int M[DMAX][DMAX]; int I; M[0][0]=1; M[0][1]=2; M[0][2]=3; M[0][3]=4; M[0][4]=5; M[1][0]=1; M[1][1]=2; M[1][2]=3; M[1][3]=4; M[1][4]=5; M[2][0]=1; M[2][1]=2; M[2][2]=3; M[2][3]=4; M[2][4]=5; M[3][0]=1; M[3][1]=2; M[3][2]=3; M[3][3]=4; M[3][4]=5; M[4][0]=1; M[4][1]=2; M[4][2]=3; M[4][3]=4; M[4][4]=5; for(I=0; I < 3; I++) ES2(M, 5, 5); return 0; } La matrice M inizialmente contiene tutti 1 nella prima colonna, tutti 2 nella seconda colonna e così via.
Indicare il contenuto della matrice M al termine del programma.Risposte:
- 4 5 1 2 3
4 5 1 2 3
4 5 1 2 3
4 5 1 2 3
4 5 1 2 3- 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 4 3 2 1
5 4 3 2 1
5 4 3 2 1
5 4 3 2 1
5 4 3 2 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 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
1 2 3 4 5
e ognuna delle 3 chiamate di ES2(M, 5, 5) esegue il codice
for(I=0; I < 5; I++) V[I]=M[I][0]; for(I=0; I < 4; I++) for(K=0; K < 5; K++) M[K][I]=M[K][I+1]; for(I=0; I < 5; I++) M[I][4]=V[I];
Quindi
- V[] = {1, 1, 1, 1, 1}
- 2 3 4 5 5
2 3 4 5 5
2 3 4 5 5
2 3 4 4 5
2 3 4 5 5 - 2 3 4 5 1
2 3 4 5 1
2 3 4 5 1
2 3 4 5 1
2 3 4 5 1 - V[] = {2, 2, 2, 2, 2}
- 3 4 5 1 1
3 4 5 1 1
3 4 5 1 1
3 4 5 1 1
3 4 5 1 1 - 3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2
3 4 5 1 2 - V[] = {3, 3, 3, 3, 3}
- 4 5 1 2 2
4 5 1 2 2
4 5 1 2 2
4 5 1 2 2
4 5 1 2 2 - 4 5 1 2 3
4 5 1 2 3
4 5 1 2 3
4 5 1 2 3
4 5 1 2 3