Realizziamo un algoritmo che calcoli il prodotto tra due matrici in C.
Procediamo seguendo questi passi:
- Inseriamo i dati nella prima matrice
- Inseriamo i dati nella seconda matrice
- Calcoliamo il prodotto
- Visualizziamo la prima matrice
- Visualizziamo la seconda matrice
E’ utile sapere che il prodotto tra due matrici si può ottenere se il numero di colonne della prima matrice è uguale al numero di righe della seconda matrice.
Quindi ad esempio se ho:
a[M][N] e b[N][P] il prodotto è possibile.
a[M][N] e b[M][P] il prodotto non è possibile.
Algoritmo in linguaggio C per il calcolo del prodotto tra due matrici
Immaginiamo di poter utilizzare quindi queste due matrici, a[M][N] e b[N][P]. La matrice prodotto sarà quindi c[M][P].
Definiamo le dimensioni delle righe e delle colonne, ad esempio:
#define M 4
#define N 3
#define P 5
Quindi avremo una matrice a[4] [3] e una matrice b[3] [5].
Dapprima carichiamo i dati della prima matrice
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]);
}
e poi i dati della seconda matrice
printf("\nInseriamo i dati nella seconda matrice \n");
for (i=0;i<N;i++)
for(j=0;j<P;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &b[i][j]);
}
La matrice prodotto sarà dunque la matrice c[4][5]
Per ottenere il valore dell’elemento i, j della matrice prodotto si inizializza a zero c[i][j]=0;
Con un ciclo che scandisce la riga i di a e la colonna j di b, si accumula in c la sommatoria dei prodotti dei corrispondenti elementi di a e b.
La variabile k permette di scorrere contemporaneamente la linea i di a e la colonna j di b. Questo procedimento lo ripetiamo per ogni elemento della matrice prodotto.
Algoritmo completo del prodotto tra matrici in linguaggio C
#include <stdio.h>
#define N 3
#define P 5
#define M 4
int a[M][N];
int b[N][P];
int c[M][P];
main() {
int i,j,k;
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("\nInseriamo i dati nella seconda matrice \n");
for (i=0;i<N;i++)
for (j=0;j<P;j++) {
printf("Inserisci elemento di riga %d e colonna %d: ", i, j);
scanf("%d", &b[i][j]);
}
printf("\nCalcoliamo il prodotto \n");
for (i=0;i<M;i++)
for(j=0;j<P;j++) {
c[i][j]=0;
for(k=0;k<N;k++)
c[i][j]=c[i][j]+a[i][k]*b[k][j];
}
printf("\nStampiamo i dati della prima 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 seconda matrice \n");
for (i=0;i<N;i++) {
printf("\n");
for(j=0;j<P;j++)
printf("\t%d", b[i][j]);
}
printf("\nStampiamo i dati della matrice prodotto \n");
for (i=0;i<M;i++) {
printf("\n");
for(j=0;j<P;j++)
printf("\t%d", c[i][j]);
}
}
Ovviamente proponete pure il vostro metodo nei commenti sotto.
Alcuni link utili:
Media dei numeri in un array in C
Selection sort in linguaggio C
Insertion Sort in linguaggio C
Ottimo spiegato bene! Spero inserirai altri esempi.
Certo sicuramente, se ti va segui la mia pagina su facebook
https://www.facebook.com/Codingcreativo-158675988177964
in modo da restare sempre aggiornato sui miei articoli.