Realizziamo adesso un algoritmo che calcola la somma di due matrici in C.
Innanzitutto va detto che la somma si può effettuare solo se le due matrici hanno lo stesso numero di righe e di colonne.
Date due matrici A[M][N] e B[M][N] , la somma si effettua semplicemente sommando l’elemento della prima riga e della prima colonna della matrice A con l’elemento della prima riga e della prima colonna della matrice B. E così via per gli altri elementi.
Si avrà una matrice C[M][N] .
Ad esempio se guardiamo le matrici della figura sotto A e B, la matrice somma sarà la matrice C che si ottiene sommando il primo elemento della prima riga e della prima colonna di A (cioè l’elemento 2) con il primo elemento della prima riga e della prima colonna di B (cioè l’elemento 4). Il secondo elemento della matrice somma sarà dato dalla somma di 8 e 15. Ecc..
Allego le foto sotto.
Algoritmo che realizza la somma di due matrici in C
Realizziamo adesso il programma, premettendo che l’uso delle funzioni lo renderebbe molto più snello ma ne rimando l’uso dopo aver spiegato come si usano.
I passi da seguire sono questi:
- Inserire la prima matrice
- Inserire la seconda matrice
- Calcolare la matrice somma
Procediamo chiedendo in input il numero di righe e di colonne. Non ho fatto il controllo dell’input come nell’esempio precedente, ma si può aggiungere.
Inseriamo i dati nella prima matrice e i dati nella seconda matrice. Stampiamo le due matrici e poi le sommiamo (potevo fare anche prima la somma e poi la stampa delle due matrici, è indifferente).
La somma delle due matrici si ottiene sommando ciascun elemento della prima riga della matrice A con ogni elemento della stessa posizione della prima riga della matrice B. Ovvero:
C[i][j]=A[i][j]+B[i][j];
Come spiegato nelle due immagini sopra.
Allego il programma che chiaramente è solo un esempio. Si possono trovare altre varianti.
#include <stdio.h>
#define M 8
#define N 8
main() {
int A[M][N], B[M][N], C[M][N];
int n,m,i,j;
printf("Dammi il numero di righe: ");
scanf("%d", &m);
printf("Dammi il numero di colonne: ");
scanf("%d", &n);
printf("\nInseriamo i dati nella prima 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("\nInseriamo i dati nella seconda 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", &B[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]);
}
printf("\nStampiamo i dati della matrice \n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++)
printf("\t%d", B[i][j]);
}
for (i=0;i<m;i++) {
for (j=0;j<n;j++)
C[i][j]=A[i][j]+B[i][j];
}
printf("\nStampiamo i dati della matrice somma\n");
for (i=0;i<m;i++) {
printf("\n");
for(j=0;j<n;j++)
printf("\t%d", C[i][j]);
}
}
Alcuni link utili:
Somma elementi cornice esterna
Somma dei numeri di una matrice
Ricerca elementi in una matrice