matrici somma elementi

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:

matrice

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

Sommare due matrici in C

Matrice trasposta in C

Prodotto tra matrici in C

Ricerca elementi in una matrice in C

Inserire dati in una matrice in C

Tavola pitagorica in C

Array multidimensionali in C

Programma sui triangoli in C

Media dei numeri in un array

Array con numeri random

Quick sort in C

Selection sort in C

Merge sort in C

Insertion Sort in C



Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *