Olá, caros usuários, prazer! Faz pouco tempo que comecei a estudar programação em C, cheguei na parte de matrizes e me deparei com um problema num código para efetuar o produto das mesmas. Já comparei meu código com alguns outros que vi na internet, porém, não consegui achar o meu erro... Segue abaixo o meu código, caso alguém possa me ajudar, ficarei extremamente grato!
#include <stdio.h>
#include <stdlib.h>
#define TAM 2 //usei essa constante TAM para representar o tamanho das linhas e das colunas, que são iguais no meu algoritmo.
main () {
int matA[TAM][TAM], matB[TAM][TAM], matR[TAM][TAM]; //declaração das matrizes A e B, que serão multiplicadas, e, da minha matriz R que vai receber o resultado.
for (int n=1; n<3; n++) { //esse for mais externo, é basicamente para efetuar a leitura das duas matrizes, A e B.
for (int i=0; i<TAM; i++) {
for (int j=0; j<TAM; j++){
printf ("Digite o valor %ix%i da matriz %i: \n", i+1, j+1, n);
if (n==1) //com essa condicional, a maquina saberá quando guardar os valores de A e quando começar a guardar os valores de B
scanf ("%i", &matA[j]);
else
scanf ("%i", &matB[j]);
}
printf ("\n");
}
printf ("\n");
}
for (int n=0; n<2; n++) { /*esse conjunto de laços for aqui é para exibir os valores das matrizes A e B logo depois que o usuário inseri-los. for (int i=0; i<TAM; i++) { eu testei com somente essa parte, de pedir os valores das matrizes, for (int j=0; j<TAM; j++) { armazena-los e de logo em seguida exibi-los, e até aqui, está tudo ok. Os valores são capturados e exibidos corretamente...*/ if (n==0)
printf ("%i-", matA[j]);
else
printf ("%i-", matB[j]);
}
printf("\n");
}
printf("\n");
}
for (int i=0; i<TAM; i++) { //essa parte é a que faz a multiplicação das matrizes, creio que o meu erro esteja aqui [...]
for (int j=0; j<TAM; j++) {
for (int k=0; k<TAM; k++) {
matR[j] = matR[j]+(matA[k]*matB[k][j]);
}
}
}
for (int i=0; i<TAM; i++) { //[...] ou aqui. Essa é para exibir a matriz com o resultado da multiplicação.
for (int j=0; j<TAM; j++) {
printf ("%i ", matR[j]);
}
printf("\n");
}
system ("pause");
return 0;
}
Pergunta
João Lucas Alves de Macedo
Olá, caros usuários, prazer! Faz pouco tempo que comecei a estudar programação em C, cheguei na parte de matrizes e me deparei com um problema num código para efetuar o produto das mesmas. Já comparei meu código com alguns outros que vi na internet, porém, não consegui achar o meu erro... Segue abaixo o meu código, caso alguém possa me ajudar, ficarei extremamente grato!
#include <stdio.h>
#include <stdlib.h>
#define TAM 2 //usei essa constante TAM para representar o tamanho das linhas e das colunas, que são iguais no meu algoritmo.
main () {
int matA[TAM][TAM], matB[TAM][TAM], matR[TAM][TAM]; //declaração das matrizes A e B, que serão multiplicadas, e, da minha matriz R que vai receber o resultado.
for (int n=1; n<3; n++) { //esse for mais externo, é basicamente para efetuar a leitura das duas matrizes, A e B.
for (int i=0; i<TAM; i++) {
for (int j=0; j<TAM; j++){
printf ("Digite o valor %ix%i da matriz %i: \n", i+1, j+1, n);
if (n==1) //com essa condicional, a maquina saberá quando guardar os valores de A e quando começar a guardar os valores de B
scanf ("%i", &matA[j]);
else
scanf ("%i", &matB[j]);
}
printf ("\n");
}
printf ("\n");
}
for (int n=0; n<2; n++) { /*esse conjunto de laços for aqui é para exibir os valores das matrizes A e B logo depois que o usuário inseri-los.
for (int i=0; i<TAM; i++) { eu testei com somente essa parte, de pedir os valores das matrizes,
for (int j=0; j<TAM; j++) { armazena-los e de logo em seguida exibi-los, e até aqui, está tudo ok. Os valores são capturados e exibidos corretamente...*/
if (n==0)
printf ("%i-", matA[j]);
else
printf ("%i-", matB[j]);
}
printf("\n");
}
printf("\n");
}
for (int i=0; i<TAM; i++) { //essa parte é a que faz a multiplicação das matrizes, creio que o meu erro esteja aqui [...]
for (int j=0; j<TAM; j++) {
for (int k=0; k<TAM; k++) {
matR[j] = matR[j]+(matA[k]*matB[k][j]);
}
}
}
for (int i=0; i<TAM; i++) { //[...] ou aqui. Essa é para exibir a matriz com o resultado da multiplicação.
for (int j=0; j<TAM; j++) {
printf ("%i ", matR[j]);
}
printf("\n");
}
system ("pause");
return 0;
}
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.