Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Lazarp

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

Recommended Posts

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;
}

Editado por Lazarp

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito Obrigado LNW!! Não percebi essa mancada!!

O erro estava na função zerar, na qual eu realmente extrapolava os limites das matrizes. Nas outras eu só ia até a posição 2 das matrizes.

o/

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal precisa fazer um algoritmo com matriz , que seja uma matriz 2 linha e 6 coluna e em cada linha escrito [A] [D] [E] [M] [L] e na linha de baixo igual, ajudem ae , não sei nem como começar , obg. (tem que rodar no DEV.)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário






Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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

×