Realizziamo un semplicissimo algoritmo per il calcolo della somma dei numeri di una matrice in C.
Come prima dobbiamo inserire il numero di righe e di colonne della matrice, ovvero M ed N.
Tramite il ciclo do-while faccio un controllo dell’input, ovvero verifico che M ed N siano compresi nelle dimensioni massime definite prima e che non siano minori di 1. Ricordiamo che nel caso in cui M o N sia 1 abbiamo un array monodimensionale.
do {
printf("Dammi il numero di righe: ");
scanf("%d", &m);
} while ((m>M) || (m<1));
do {
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
} while ((n>N)|| (n<1));
Adesso inseriamo i dati nella nostra matrice, procediamo per righe utilizzando due cicli annidati con i due indici i e j. L’indice i per le righe, l’indice j per le colonne. Quindi il primo elemento inserito sarà a[0][0] poi a[0][1] e così via.
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<m;i++)
for (j=0;j<n;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
}
Per effettuare la somma degli elementi molto semplicemente dichiariamo una variabile somma che inizializziamo a 0 (somma=0) e procediamo effettuando la somma progressiva degli elementi.
Quindi scriviamo semplicemente:
somma=somma+a[i][j];
Facciamo un esempio. Prendiamo la seguente matrice sotto:
L’algoritmo procederà così:
Prenderà la variabile somma e sommerà il primo elemento: somma=somma+2.
La prima volta prenderà somma=0 quindi somma=0+2=2.
Poi passerà al secondo elemento e lo sommerà alla somma precedente.
Cioè somma=2 (somma precedente) + 8 (secondo elemento)=10
Poi passerà al terzo elemento e quindi somma=10 (somma precedente) + 9 (terzo elemento) = 19
Appena finisce la prima riga passerà alla seconda riga, usando lo stesso procedimento, sommando a 19 il primo elemento della seconda riga. E così via.
Algoritmo per il calcolo della somma dei numeri di una matrice in C
#include <stdio.h>
#define M 8
#define N 8
main() {
int a[M][N];
int somma;
do {
printf("Dammi il numero di righe: ");
scanf("%d", &m);
} while ((m>M) || (m<1));
do {
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
} while ((n>N)|| (n<1));
printf("\nInseriamo i dati nella matrice \n");
for (i=0;i<m;i++)
for(j=0;j<n;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &a[i][j]);
}
printf("\nStampiamo i dati della matrice \n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++) {
printf("\t%d", a[i][j]);
somma=somma+a[i][j];
}
}
printf("\nla somma è: \t %d", somma);
}
Ci possono essere tanti altri modi per risolvere questo problema, proponi pure il tuo metodo nei commenti sotto.
Alcuni link utili:
Somma elementi diagonale principale di una matrice in C
Somma elementi cornice esterna in C
Ricerca elementi in una matrice in C
Inserire dati in una matrice in C