Bom dia, gente!
Sou iniciante na linguagem C e estou com uma dúvida nesse exercício "Leia uma matriz 3x2 e outra 2x3 de números double. Imprima o produto destas duas
matrizes"
Tentei fazer o programa, mas o resultado final está saindo totalmente divergente da resposta correta, inclusive com lixo de memória.
Esse é o código:
#include <stdio.h>
#include <conio.h>
void preenche_matrizA(double matA [][2])
{
int i,j;
for (i=0;i < 3;i++)
{
for (j = 0;j < 2;j++)
{
printf ("Matriz[%d][%d]= ", i+1,j+1);
scanf("%f", &matA[j]); } } } void preenche_matrizB(double matB [][3]) { int i,j; for (i=0;i< 2 ;i++) {
for (j = 0;j< 3;j++) { printf ("Matriz[%d][%d]= ", i+1,j+1); scanf("%f", &matB[j]); } } } void produto(double matA[][2], double matB[][3], double matC[][3]) { int i,j,k; for(i=0;i< 3 ;i++) {
for(j=0;j< 3;j++) { matC [j]=0; for(k=0;k<3;k++) { matC[j] = matC[j] + matA[k]*matB[k][j]; } } } } int main() {
double matrizA[3][2],matrizB[2][3],matrizC[3][3]; int i,j; printf ("Digite os numeros da matriz A 3X2:\n\n"); preenche_matrizA(matrizA); printf ("Digite os numeros da matriz B 2X3:\n\n"); preenche_matrizB(matrizB); produto(matrizA,matrizB,matrizC); printf("\nMatriz resultante:\n\n"); for (i=0;i< 3;i++) { for (j=0;j< 3;j++) { printf ("%.2f ", matrizC[j]); } printf ("\n"); } getch(); return 0; }
Desde já, meus agradecimentos♥
adicionado 2 minutos depois
Não sei qual o motivo que ao postar aqui essa linha saiu diferente, mas no programa original está:
matC[j] = matC[j] + matA[k]*matB[k][j];