Funzioni e Matrici (Esempio 1)

Concetti:
Passaggio di matrici a funzioni (le matrici in C vengono passate alle funzioni sempre per riferimento)

Testo:
Si realizzi una funzione che:

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:

matrici_funzioni_1.c
/* 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];
      }
    }
  }
}