//Programa que realiza a multiplicação entre duas matrizes.
#include <stdio.h>
main() {
int i1, j1, i2, j2, i, j, k, m1[50][50], m2[50][50], m3[50][50];
printf("\n==========MULTIPLICACAO DE MATRIZES==========\n");
printf("\nMatriz 1\n==========\n");
printf("\nDigite o numero de linhas...: ");
scanf("%d", &i1);
printf("Digite o numero de colunas..: ");
scanf("%d", &j1);
printf("\nMatriz 2\n==========\n");
printf("\nDigite o numero de linhas...: ");
scanf("%d", &i2);
printf("Digite o numero de colunas..: ");
scanf("%d", &j2);
if (j1 == i2) {
printf("\nValores da Matriz 1\n=====================\n\n");
for (i=0; i<i1; i++) {
for(j=0; j<j1; j++) {
printf("Digite um valor para [%d][%d].: ", (i+1), (j+1));
scanf("%d", &m1[i][j]);
}
}
printf("\nValores da Matriz 2\n=====================\n\n");
for (i=0; i<i2; i++) {
for (j=0; j<j2; j++) {
printf("Digite um valor para [%d][%d].: ", (i+1), (j+1));
scanf("%d", &m2[i][j]);
}
}
for (i=0;i<i1; i++) {
for (j=0; j<i1; j++) {
for (k=0; k<j1; k++) {
m3[i][j] = m3[i][j] + (m1[i][k] * m2[k][j]);
}
}
}
printf("\nMatriz 3\n=====================\n\n");
for (i=0; i<i1; i++) {
for (j=0; j<j2; j++) {
printf("%d ", m3[i][j]);
}
printf("\n");
}
printf("\n");
}
else {
printf("\nErro! Impossivel multiplicar as matrizes informadas.\n");
}
return(0);
}
[1] Comentário enviado por willer123 em 06/10/2016 - 14:01h
Bom dia, sugiro que depois de cada for referente a preencher as linhas seja adicionado um printf(\n); para um melhor uso, percebi que seu algorítimo funciona bem com matrizes quadradas, porém isso não ocorre com matrizes de ordens diferentes exemplo 3x4 x 4x4. se você permitir eu mesmo poderia fazer as atualizações. Obrigado.
[2] Comentário enviado por mpaiva2505 em 02/11/2023 - 00:13h
A rotina é muito boa, parabens, eu iria sugerir uma alteração que leva alteração em alguns pontos, alterar as matrizes para float e não integer, dai tem que mudar nos scafs e printf os %d para %f, daí podemos manipular dados do conjunto dos números reais, exemplo, para solução do sistema [3400,2800;8,45]*[x1;x2] = [3000;21], que pode ser representado por A*X = B ---> X=B/A ---> X=1/A*B ----> X = inversaA * V ---> [x1;x2] = [0.00034456,-0.02143951;-0.00006126,0.02603369]*[3000;21], cuja solução será: S=[x1;x2]=[0.583450;0.362927] ...
//Programa que realiza a multiplicação entre duas matrizes.
#include <stdio.h>
int main() {
int i1, j1, i2, j2, i, j, k;
float m1[50][50], m2[50][50], m3[50][50];
printf("\n==========MULTIPLICACAO DE MATRIZES==========\n");
printf("\nMatriz 1\n==========\n");
printf("\nDigite o numero de linhas...: ");
scanf("%d", &i1);
printf("Digite o numero de colunas..: ");
scanf("%d", &j1);
printf("\nMatriz 2\n==========\n");
printf("\nDigite o numero de linhas...: ");
scanf("%d", &i2);
printf("Digite o numero de colunas..: ");
scanf("%d", &j2);
if (j1 == i2) {
printf("\nValores da Matriz 1\n=====================\n\n");
for (i=0; i<i1; i++) {
for(j=0; j<j1; j++) {
printf("Digite um valor para [%d][%d].: ", (i+1), (j+1));
scanf("%f", &m1[i][j]);
}
}
printf("\nValores da Matriz 2\n=====================\n\n");
for (i=0; i<i2; i++) {
for (j=0; j<j2; j++) {
printf("Digite um valor para [%d][%d].: ", (i+1), (j+1));
scanf("%f", &m2[i][j]);
}
}
for (i=0;i<i1; i++) {
for (j=0; j<i1; j++) {
for (k=0; k<j1; k++) {
m3[i][j] = m3[i][j] + (m1[i][k] * m2[k][j]);
}
}
}
printf("\nMatriz 3\n=====================\n\n");
for (i=0; i<i1; i++) {
for (j=0; j<j2; j++) {
printf("%f ", m3[i][j]);
}
printf("\n");
}
printf("\n");
}
else {
printf("\nErro! Impossivel multiplicar as matrizes informadas.\n");
}
return(0);
}
saida:
Digite um valor para [1][1].: 0.00034456
Digite um valor para [1][2].: -0.02143951
Digite um valor para [2][1].: -0.00006126
Digite um valor para [2][2].: 0.02603369
Valores da Matriz 2
=====================
Digite um valor para [1][1].: 3000
Digite um valor para [2][1].: 21