#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#define N 3
void stampamatrice(int matrice[N][N]);
void prodottomatrici(int matrice1[][N], int matrice2[][N], int matrice3[][N]);
int main ()
{
int matrice1[N][N], matrice2[N][N];
int matrice3[N][N];
int i,j,k;
srand(time(NULL));
printf("\n Prodotto di due matrici 1, 2 \n");
printf("\n MATRICE1 \n");
for(i=0; i<N; i++)
for(j=0; j<N; j++)
matrice1[i][j]=rand()%10 ;
printf("\n Genero una matrice1 di dimensioni %dX%d:\n\n",N,N);
stampamatrice(matrice1);
printf("\n MATRICE2\n");
for(i=0; i<N; i++)
for(j=0; j<N; j++)
matrice2[i][j]=rand()%10 ;
printf("\n Genero una matrice2 di dimensioni %dX%d:\n\n",N,N);
stampamatrice(matrice2);
printf("\n RISULTATO \n");
/*for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
matrice3[i][j] = 0;
for(k=0; k<N; k++)
matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
}
printf("\n");
}*/
prodottomatrici(matrice1,matrice2,matrice3); //va prima di stampamatrice //devi dargli in input tutte le matrici
stampamatrice(matrice3);
printf("FINE \n\n");
getchar();
}
void stampamatrice(int matrice[N][N])
{
int i,j;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)printf("%4d",matrice[i][j]);
printf("\n\n");
}
}
void prodottomatrici(int matrice1[][N], int matrice2[][N], int matrice3[][N]) //deve essere matrice[][N]
{
int i,j,k;
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
{
matrice3[i][j] = 0;
for(k=0; k<N; k++)
matrice3[i][j]+=matrice1[i][k]*matrice2[k][j];
}
printf("\n");
}
}
Con tre correzioni
-alla funzione prodotto devi dare tutte le matrici
-prima calcoli il prodotto, poi lo visualizzi
-di un vettore devi dichiarare tutte le dimensioni tranne la prima(facoltativa)
al massimo gli passi un puntatore al primo elemento della matrice e separatamente le dimensioni