Come sommare gli elementi di due matrici in C

In questa pagina viene mostrato come svolgere l’esercizio in cui bisogna sommare tra di loro gli elementi contenuti all’interno di due matrici in C.

La somma di matrici è una particolare operazione che può essere compiuta solamente tra matrici che possiedono la stessa dimensione, ovvero che presentano lo stesso numeri di righe e di colonne. Tale operazione comporta la definizione di una nuova matrice, avente la stessa dimensione delle matrici di partenza e come elementi la somma degli elementi che si trovano nella stessa posizione delle matrici iniziali.

Di conseguenza, per poter svolgere l’operazione di somma tra matrici in C, abbiamo bisogno di dichiarare tre matrici, in quanto due conterranno gli elementi iniziali, mentre la terza matrice conterrà la somma delle due matrici precedenti.

Nota: è importante che tutte le matrici dichiarate abbiano le stesse dimensioni, altrimenti per definizione non si può effettuare l’operazione di somma, e che abbiano lo stesso tipo di dato, in modo da evitare problemi di casting implicito durante la conversione da un tipo all’altro.

Per quanto riguarda la dimensione delle matrici definiamo due macro (M ed N) con la direttiva #define a cui assegniamo il valore 3 e le utilizziamo nella dichiarazione delle matrici per specificare la loro dimensione. In questo caso otteniamo matrici quadrate con tre righe e tre colonne.

Per quanto riguarda il tipo di dato delle matrici, è abbastanza arbitrario, basta che venga utilizzato lo stesso tipo di dato per ciascuna matrice.

A questo punto, non rimane che riempire le due matrici da sommare con dei valori che possono essere inseriti dall’utente o direttamente scritti nel codice, come nel nostro caso.

Per effettuare la somma degli elementi di due matrici, abbiamo bisogno di accedere agli elementi che si trovano nella stessa posizione all’interno delle due matrici iniziali, e sommarli tra di loro. Chiaramente questo processo va ripetuto per ogni posizione delle matrici.

Per svolgere tali operazioni nel linguaggio C, abbiamo bisogno di utilizzare due cicli for innestati, in modo da utilizzare il primo for per scorrere le righe, mentre il secondo for per scorrere le colonne, oppure il viceversa. In questo modo ad ogni iterazione dei due cicli ci troveremo in una particolare posizione, o indice, identificata dalle due variabili del ciclo for (nel nostro caso i ed j).

Pertanto possiamo inserire all’interno della terza matrice, nella posizione identificata da i ed j, la somma degli elementi, che si trovano nella stessa posizione, delle due matrici iniziali.

Nota: lo stesso risultato può essere ottenuto utilizzando due cicli while o do while.

Per visualizzare la nuova matrice somma, possiamo utilizzare due nuovi cicli for, definendoli al di fuori dei cicli precedenti, oppure utilizzare i due cicli for precedenti per stampare a schermo, con la funzione printf, la somma dei valori (come nel nostro caso).

Codice completo per sommare gli elementi di due matrici in C

Di seguito viene riportato il codice completo per creare un programma in grado di sommare gli elementi di due matrici in C.


#include <stdio.h>
#define M 3
#define N 3

int main(){
    int a[M][N] = {{2, 6, 7}, {4, 2, 1}, {8, 3, 5}};
    int b[M][N] = {{0, 2, 1}, {5, 7, 4}, {1, 2, 4}};
    int somma[M][N];
  
    printf("Somma tra le due matrici: \n");
    for(int i=0; i<M; i++){
        for(int j=0; j<N; j++){
            somma[i][j] = a[i][j] + b[i][j];
            printf("%d ", somma[i][j]);
        }
        printf("\n");
    }

    return 0;
}


Somma tra le due matrici: 2 8 8 9 9 5 9 5 9

Indice pagine linguaggio C: