Ir ao conteúdo
  • Cadastre-se

Multiplicação de Matrizes. O programa calcula certinho, mas dá erro no final.


Lazarp

Posts recomendados

Oi pessoal, beleza?

Não sei mais o que fazer com esse código. O erro acontece no final de tudo. O resultado da multiplicação sai certo, mas algo acontece e o programa não termina. Alguém pode me ajudar a resolver isso?

valeu o/

O programa consiste em multiplicar duas matrizes 3x3 de inteiros de 0 a 99, coisa simples.


#include <stdio.h>
#include <stdlib.h>

void zerarMatriz(int matriz[5][5], int linhas, int colunas)
{
int i, j;
for(i = 0; i <= linhas; i++)
{
for(j = 0; j <= colunas; j++)
{
matriz[i][j] = 0;
}
}
return;
}

void leituraMatriz( int matriz[5][5], int linhas, int colunas)
{
int i, j;

for(i = 0; i <= 2; i++)
{
for(j = 0; j <= 2; j++)
{
do
{
printf("\nDigite elemento %d %d :\n", i, j);
scanf("%d", &matriz[i][j]);
if((matriz[i][j] < 0)||(matriz[i][j] > 99))
printf("\nValor invalido. Digite novamente.\n");

}while((matriz[i][j] < 0)||(matriz[i][j] > 99));
}
}
return;
}

void multiplicacao( int matriz1[5][5], int matriz2[5][5], int matriz3[5][5], int linhas, int colunas)
{
int i, j, k;
for(i = 0; i <= linhas; i++)
{
for(j = 0; j <= colunas; j++)
{
for(k = 0; k <= linhas; k++)
matriz3[i][j] = matriz1[i][k]*matriz2[k][j] + matriz3[i][j];
}
}
return;
}

void impressaoSaida( int matriz3[5][5], int linhas, int colunas)
{
int i, j;

for(i = 0; i <= linhas; i++)
{
for(j = 0; j <= colunas; j++)
{
printf("%4d | ", matriz3[i][j]);
}
printf("\n");
}
printf("\nPassou pela impressao\n");
return;
}

int main()
{
int matriz1[3 + 2][3 + 2], matriz2[3 + 2][3 + 2], matriz3[3 + 2][3 + 2];


zerarMatriz(matriz1, 5, 5);
zerarMatriz(matriz2, 5, 5);
zerarMatriz(matriz3, 5, 5);

leituraMatriz(matriz1, 2, 2);
leituraMatriz(matriz2, 2, 2);

multiplicacao(matriz1, matriz2, matriz3, 2, 2);

impressaoSaida(matriz3, 2, 2);


return 0;
}

Link para o comentário
Compartilhar em outros sites

Lazarp,

Você está extrapolando os índices das matrizes...

Exemplo:

Considere o vetor[5] que tem seus valores acessíveis pelos índices vetor[0] a vetor[4].

Então, você percorreria com for ( i = 0; i < 5; i++ ) e não for ( i = 0; i <= 5; i++ ), que é o que está sendo feito no seu código.

Revise todo o código sobre isso.

NW

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...