Fondamenti solidi di programmazione
Impara le basi della programmazione in C in modo semplice, pratico ed efficace. Variabili, cicli, funzioni, logica e algoritmi.
- ⏱️ 9 ore di corso registrato
- 🧩 Più di 50 algoritmi risolti passo passo
- 🎯 Livello base
- 💻 100% online, fruibile quando vuoi
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:
Array multidimensionali
Tavola pitagorica in C
Matrice trasposta in C
Array o vettori in C
Media dei numeri in un array in C
Array con numeri random in C
Quick sort in linguaggio C
Selection sort in linguaggio C
Merge sort in linguaggio C
Insertion Sort in linguaggio C