Fiz uma função em C:
float MULTIPLICACAOMAT(float matA[1000][1000],float matB[1000][1000],float matP[1000][1000])
{
printf("Entre com o tamanho (linhas x colunas) da primeira matriz \n");
printf("Numero de linhas: ");
scanf("%d",&linA);
Beep(500,100);
printf("Numero de colunas: ");
scanf("%d",&colA);
Beep(500,100);
system("cls");
printf("Entre com o tamanho (linhas x colunas) da segunda matriz \n");
printf("Numero de linhas: ");
scanf("%d",&linB);
Beep(500,100);
printf("Numero de colunas: ");
scanf("%d",&colB);
Beep(500,100);
system("cls");
if (colA==linB)
{
printf("Entre com os elementos da primeira matriz, correspondentes a: \n\n");
for(p1=0;p1<linA;p1++)
{
for(q1=0;q1<colA;q1++)
{
printf("linha %d",p1+1);
printf(" e coluna %d: ",q1+1);
scanf("%f",&matA[p1][q1]);
Beep(500,100);
}
}
printf("Entre com os elementos da segunda matriz, correspondentes a: \n\n");
for(p2=0;p2<linB;p2++)
{
for(q2=0;q2<colB;q2++)
{
printf("linha %d",p2+1);
printf(" e coluna %d: ",q2+1);
scanf("%f",&matB[p2][q2]);
Beep(500,100);
}
}
system("cls");
ACM=0.0;
for(s1=0;s1<linA;s1++)
{
for(u1=0;u1<colB;u1++)
{
for(j=0;j<colA;j++)
{
ACM=(ACM)+((matA[s1][j])*(matB[j][u1]));
}
matP[s1][u1]=ACM;
ACM=0.0;
}
}
printf("A matriz resultante da multiplicacao das duas matrizes inseridas e: \n\n");
for(s1=0;s1<linA;s1++)
{
for(u1=0;u1<colB;u1++)
{
printf("%.1f ",matP[s1][u1]);
}
printf("\n");
}
printf("\n\n");
}
if(colA!=linB)
{
printf("FATAL ERROR !! \n\n");
printf("Nao e possivel multiplicar as matrizes inseridas. Por favor, verifique seus tamanhos.");
Beep(1000,1000);
printf("\n\n\n");
}
}