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:  
Entre para seguir isso  
Asteca94

Multiplicação de Matrizes

Recommended Posts

Boa Tarde,

Estou com uma dúvida em relação a um exercício de multiplicação de matrizes.

Procurei aqui no fórum, até ache tópicos nesse assunto, mas não consegui entender alguns e outros não saciaram minha dúvida..

To usando o programa Dev C++

Eu fiz o programa, porém na hora de calcular a matriz resultante dá tudo 0 quando eu imprimo.


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

int main()
{
float m1[50][50], m2[50][50], m3[50][50] = {0};
int i1, j1, i2, j2;
int i, j;
printf("PRIMEIRA MATRIZ");
printf("\nDigite o numero de linhas de sua matriz: ");
scanf("%d",&i1);
printf("Digite o numero de colunas de sua matriz: ");
scanf("%d",&j1);
system("cls");
printf("SEGUNDA MATRIZ6");
printf("\nDigite o numero de linhas de sua matriz: ");
scanf("%d",&i2);
printf("Digite o numero de colunas de sua matriz: ");
scanf("%d",&j2);
system("cls");
if(j1==i2)
{
printf("PRIMEIRA MATRIZ\n");
for( i = 0; i < i1; i++ )
{
for( j = 0; j < j1; j++ )
{
printf(" Digite o valor do elemeto da %i linha e da coluna %i: ",i+1,j+1);
scanf("%f",&m1[i][j]);
}
}
system("cls");
printf("SEGUNDA MATRIZ\n");

for( i = 0; i < i2; i++ )
{
for( j = 0; j < j2; j++ )
{
printf(" Digite o valor do elemeto da %i linha e da coluna %i: ",i+1,j+1);
scanf("%f",&m1[i][j]);
}
}
system("cls");

for( i = 0; i < i1; i++)
{
for( j = 0; j < j2; j++)
{
for( int k = 0; k < j1; k++)
{
m3[i][j] += m1[i][k] * m2[k][j];
}
}
}
printf("\t\tMATRIZ RESULTANTE");
for( i = 0; i < i1 ; i++ )
{
printf("\n\t\xb3");
for( j = 0; j < j2 ; j++ )
printf("\t%.1f",m3[i][j]);
printf("\t\xb3");
}
}
printf("\n");
system("pause");
return 0;
}

Alguém sabe ql o problema??

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Veja esse trecho de código:

for( i = 0; i < i1; i++) 
{
for( j = 0; j < j2; j++)
{
for( int k = 0; k < j1; k++)
{
m3[i][j] [COLOR="Red"]+=[/COLOR] m1[i][k] * m2[k][j];
}
}
}

Retire o sinal "+".

Até mais.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sulera, eu retirei o sinal mas continua dando 0.

\=

O sinal é por causa da multiplicação de matrizes, que na verdade seriam matrizes da álgebra, então a multiplicação delas não é apenas a*b.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá. Acho que encontrei o erro:

for( i = 0; i < i1; i++) 
{
for( j = 0; j < [COLOR="Red"]j2[/COLOR]; j++)
{
for( int k = 0; k < j1; k++)
{
m3[i][j] = m1[i][k] * m2[k][j];
}
}

Tente substituir o "j2" destacado por "i1".

Qualquer dúvida poste novamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sulera,

Consegui fazer terminar o programa. O erro não estava nesse laço..

Por estupidez minha, no laço em que o programa lê a segunda matriz, na verdade ele estava lendo a primeira matriz. Então na hora da multiplicação sempre dava 0, pois a segunda matriz tinha 0 de valor x=

Obrigado.

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites
Sulera,

Consegui fazer terminar o programa. O erro não estava nesse laço..

Por estupidez minha, no laço em que o programa lê a segunda matriz, na verdade ele estava lendo a primeira matriz. Então na hora da multiplicação sempre dava 0, pois a segunda matriz tinha 0 de valor x=

Obrigado.

Abraços

Olá. Fico feliz que tenha conseguido, porém fiz uma multiplicação manual de matrizes e verifiquei que o laço(da forma implementada acima, no seu código) não gera o resultado correto do produto das matrizes. O meu último post acima corrige esse problema.

Até mais.

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

Entre para seguir isso  





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

×