libri-javascript-python

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.

due matrici calcolo
matrice somma


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:

Prodotto tra matrici

Somma elementi cornice esterna

Somma dei numeri di una matrice

Matrice trasposta

Prodotto tra matrici

Ricerca elementi in una matrice

Inserire dati in una matrice

Tavola pitagorica in C

Array multidimensionali

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