Em algumas linguagens podemos expressar da seguinte forma nossa necessidade
computacional:
matriz
mat1, mat2, mat3;
"leia
mat1";
"leia
mat2";
mat3=mat1*mat2;
C não é uma destas
linguagens. Para multiplicar matrizes voce terá que usar arranjos de arranjos e
especificar todas as somas e multiplicação de valores escalares que devem
ocorrer de forma intermediária.
Algoritmo para
multiplicação de matrizes
programa
multiplica_matrizes;
matriz mat1, mat2, mat3;
inteiro linha, coluna, i, acumula;
"leia mat1";
"leia mat2";
"verifique se mat1 é compativel com mat2";
para linha de 1 até "numero de linhas de mat1" faça
para coluna de 1 até "numero de colunas de mat2" faça
acumula=0;
para i de 1 até "numero de colunas de mat1" faça
acumula=acumula+mat1[linha][i]*mat2[i][coluna];
fimpara;
mat3[linha][coluna]=acumula;
fimpara;
fimpara;
imprima mat3;
fim
programa;
O programa em C abaixo
representa matrizes através de arranjos de arranjos de int;
Compare o algoritmo e o programa. No lugar de “leia mat1” e “leia
mat2” temos iniciação
int main(int argc, char *argv[])
{ int linha;
int coluna;
int i;
int somaprod;
int
mat1[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int
mat2[3][3]={{1,0,0},{0,1,0},{0,0,1}};
int mat3[3][3];
int M1L=3, M1C=3, M2L=3, M2C=3;
for(linha=0; linha<M1L; linha++)
for(coluna=0; coluna<M2C;
coluna++){
somaprod=0;
for(i=0; i<M1L; i++)
somaprod+=mat1[linha][i]*mat2[i][coluna];
mat3[linha][coluna]=somaprod;
}
//
//imprime mat3
//
for(linha=0; linha<M1L; linha++){
for(coluna=0; coluna<M2C;
coluna++)
printf("%d ",
mat3[linha][coluna]);
printf("\n");
}
system("PAUSE");
return 0;
}