emmas
Nuovo Utente
- Messaggi
- 1
- Reazioni
- 0
- Punteggio
- 2
Buongiorno, sono alle prime armi e dovrei scrivere un programma in C che, date due matrici in input di dimensione a scelta dall'utente, ne svolge il prodotto (se possibile) e stampa la matrice risultato. Ho scritto il codice ma non riesco a capire dove sto sbagliando, dato che il risultato che ottengo non è sempre corretto. Per esempio, se provo a moltiplicare una matrice 2x3 per una 3x2, mi da come risultato una matrice 3x3.
C:
// Moltiplicazione tra matrici
#include <stdio.h>
int main() {
int n, m, n1, m1, i, j, k;
printf("Inserisci dimensione prima matrice\n");
printf("Numero righe: ");
scanf("%d", &n);
printf("Numero colonne: ");
scanf("%d", &m);// dimensione prima matrice
printf("Inserisci dimensione seconda matrice\n");
printf("Numero righe: ");
scanf("%d", &n1);
printf("Numero colonne: ");
scanf("%d", &m1);// dimensione seconda matrice
if (m!=n1){
printf("Matrici non moltiplicabili");
}
else{
int a[n][m];
int b[n1][m1];
// inserisco le due matrici
i=0;
while(i<n){
while(j<m){
printf("Valore in posizione a[%d]x[%d]: ", i, j);
scanf("%d", &a[i][j]);
j=j+1;
}
printf("\n");
j=0;
i=i+1;
}
i=0;
while(i<n1){
while(j<m1){
printf("Valore in posizione b[%d]x[%d]: ", i, j);
scanf("%d", &b[i][j]);
j=j+1;
}
printf("\n");
j=0;
i=i+1;
}
// stampo matrici
printf("\nPrima matrice:\n");
for (i=0;i<n;++i){
for (j=0;j<m;++j){
printf("%d", a[i][j]);
}
printf("\n");
}
printf("\nSeconda matrice:\n");
for (i=0;i<n1;++i){
for (j=0;j<m1;++j){
printf("%d", b[i][j]);
}
printf("\n");
}
//moltiplicazione
int c[n][m1];
k=0;
for(i=0;i<n;++i){
j=0;
for(j=0;j<m1;++j) {
c[i][j]=0;
k=0;
while(k<m){
c[i][j]=c[i][j]+(a[i][k]*b[k][j]);
k=k+1;
}
}
}
// stampo matrice prodotto
printf("\nLa matrice prodotto è: \n");
for (i=0;i<m;++i){
for (j=0;j<n1;++j){
printf("%d ", c[i][j]);
}
printf("\n");
}
return 0;
}
}