Concetti:
Passaggio di matrici a funzioni (le matrici in C vengono passate alle funzioni sempre per riferimento)
Testo:
Si realizzi una funzione che:
nr
e nc
, rispettivamente il numero di linee e di colonne). Il prototipo della funzione da realizzare è il seguente:void cambiaSegno(int matr[][C], int nr, int nc);
La funzione chiamante (main
) dovrà stampare la matrice prima e dopo la trasformazione effettuata dalla funzione cambiaSegno
.
Soluzione:
/* Realizzare una funzione che riceve in ingresso una matrice e le sue dimensioni, cioè il suo numero di righe e di colonne. La funzione deve cambiare di segno tutte le righe con indice di riga pari (righe 0, 2, 4, 6,...). */ #include <stdio.h> #define R 3 #define C 4 void cambiaSegno(int matr[][C], int nr, int nc); int main(){ int m[R][C] = {{1, 2 , 3, 4}, {-1, -2, 3, 4}, {1, -2, 3, -4}}; int i, j; printf("Matrice iniziale\n"); for(i=0; i<R; i++){ for(j=0; j<C; j++){ printf("%3d", m[i][j]); } printf("\n"); } cambiaSegno(m, R, C); printf("Matrice con elementi cambiati di segno\n"); for(i=0; i<R; i++){ for(j=0; j<C; j++){ printf("%3d", m[i][j]); } printf("\n"); } return 0; } void cambiaSegno(int matr[][C], int nr, int nc){ int r, c; for(r=0; r<nr; r++) { if(r%2==0) { for(c=0; c<nc; c++) { matr[r][c] = -1*matr[r][c]; } } } }