AD

Somma delle righe di una matrice in C

Nella seguente pagina viene mostrato come creare un programma in grado di effettuare la somma di ciascuna riga di una matrice in C. Questo significa che al termine dell’esecuzione del programma ci sarà una nuova matrice con una colonna e lo stesso numero di righe della matrice di partenza. In particolare ogni riga della nuova matrice conterrà la somma dei valori che compongono la matrice iniziale.

Iniziamo con il definire di una matrice di dimensione MxN, dove M ed N sono due macro definite con la direttiva #define, che rappresentano, rispettivamente, il numero di righe e di colonne che compongono la matrice. Per quanto riguarda i valori, inizializziamo direttamente la matrice nel codice, evitando di chiedere all’utente di inserire dei numeri.

Oltre alla matrice di partenza, abbiamo bisogno di una ulteriore matrice di dimensione Mx1, ovvero una matrice colonna, cioè una matrice formata solamente da una singola colonna. Questa matrice verrà usata per memorizzare la somma degli elementi che compongono ogni riga della matrice di partenza.

Per effettuare la somma di ciascuna riga, dobbiamo scorrere l’intera matrice iniziale utilizzando due cicli for innestati. In particolare il ciclo for esterno viene usato per scorrere le righe, mentre quello interno per scorrere le colonne. Questo significa che per sommare gli elementi di ciascuna riga, dobbiamo effettuare l’operazione di somma tra i vari elementi delle colonne che si trovano su tale riga. Ovvero deve essere effettuato all’interno del secondo ciclo for, utilizzando un'apposita variabile somma.

Al termine del ciclo for interno, dobbiamo inserire il valore della somma calcolata all’interno della riga della seconda matrice dichiarata. Dopodiché dobbiamo resettare la variabile somma ad 0, in modo che alla prossima iterazione del ciclo for esterno possiamo calcolare la somma della riga successiva.

Finiti entrambi i cicli for, ci troviamo ad avere la matrice "righe" contenente la somma di ciascuna riga della matrice iniziale.

Nota: al posto di utilizzare una matrice per immagazzinare la somma delle righe, è possibile utilizzare un array, essendo che la matrice utilizzata è di fatto monodimensionale. Però per rendere più chiaro l’obiettivo dell’esercizio, è stato deciso di utilizzare una matrice.

Codice completo per sommare le righe di una matrice in C

Di seguito viene riportato il codice completo per sommare ciascuna riga di una specifica matrice in C.

#include <stdio.h> #define M 3 #define N 3 int main(){     int mat[M][N] = {{2, 6, 7}, {4, 2, 1}, {8, 3, 5}};     int righe[M][1];     int somma = 0;     for(int i = 0; i < M; i++){         for(int j = 0; j < N; j++){          somma += mat[i][j];         }         righe[i][0] = somma;         somma = 0;     }     for(int i = 0; i < M; i++){         printf("%d\n", righe[i][0]);     }     return 0; } /* Output: 15 7 16 */