| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 01:07:53
|
alinecs
What is classpath?
Membro desde: 31/10/2010 01:04:40
Mensagens: 5
Offline
|
Oi!
gostaria de saber como faço a multiplicaçao das matrizes desse problema, e como faço pra imprimi-la usando o c++!
"Fazer um programa que leia uma matriz M13x2e uma matriz M22x3,e calcule a multiplicação de M1 por M2."
obrigada!
xD
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 09:32:22
|
andeb
Thread.start()
Membro desde: 17/05/2009 21:01:04
Mensagens: 47
Localização: Blumenau
Offline
|
Não dá de multiplicar essa matriz. O número de colunas da M1 precisa ser o mesmo que o número de linhas da M2.
|
"it's not what you know, it's when you know it" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 09:57:58
|
davidbuzatto
Moderador
![[Avatar]](/images/avatar/7ba6d33c373fea56b7258003b16c68e5.jpg)
Membro desde: 07/08/2004 23:47:57
Mensagens: 4013
Localização: Vargem Grande do Sul - SP
Offline
|
andeb wrote:Não dá de multiplicar essa matriz. O número de colunas da M1 precisa ser o mesmo que o número de linhas da M2.
Hein? Mas não é assim? M1 tem 2 linhas, três colunas. M2 tem 3 linhas, 2 colunas.
Olha a definição de multiplicação entre matrizes:
Analisando a definição é possível facilmente escrever o algoritimo.
[]´s
|
Seja educado. Agradeça quem te ajudou. Não custa nada.
Dúvidas de Java? Utilize o fórum! Não respondo via MP.
"Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Fowler)
"A vida é um escândalo, e no final dá sempre errado. O que humaniza o homem é o fracasso."
http://davidbuzatto.com.br | GitHub | uHunt | CV Lattes | Last.fm |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 10:05:06
|
Andre Rosa
GUJ Master
![[Avatar]](/images/avatar/140132c1a7044bd6f7175e6d232cf277.jpg)
Membro desde: 22/01/2010 07:10:22
Mensagens: 1297
Offline
|
alinecs wrote:Oi!
gostaria de saber como faço a multiplicaçao das matrizes desse problema, e como faço pra imprimi-la usando o c++!
"Fazer um programa que leia uma matriz M13x2e uma matriz M22x3,e calcule a multiplicação de M1 por M2."
obrigada!
xD
Poste o que você já fez.
|
Um programador pobre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 11:01:27
|
andeb
Thread.start()
Membro desde: 17/05/2009 21:01:04
Mensagens: 47
Localização: Blumenau
Offline
|
davidbuzatto wrote:
andeb wrote:Não dá de multiplicar essa matriz. O número de colunas da M1 precisa ser o mesmo que o número de linhas da M2.
Hein? Mas não é assim? M1 tem 2 linhas, três colunas. M2 tem 3 linhas, 2 colunas.
Olha a definição de multiplicação entre matrizes:
Analisando a definição é possível facilmente escrever o algoritimo.
[]´s
Ah, perfeito, fui cabaço mesmo, li 13 linhas para uma e 22 linhas para outra. xD
|
"it's not what you know, it's when you know it" |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 12:28:39
|
alinecs
What is classpath?
Membro desde: 31/10/2010 01:04:40
Mensagens: 5
Offline
|
//Fazer um programa que leia uma matriz M13x2e uma matriz M22x3
// e calcule a multiplicação de M1 por M2.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int mt1 [3][2], mt2 [2][3];
int linha, coluna;
int mtRES[3][3];
//primeira matriz 3x2
printf ("Digite a matriz 1:\n");
for(linha=0; linha<3; linha++)
{
for(coluna=0; coluna<2; coluna++)
scanf("%10d", &mt1[linha][coluna]);
}
for (linha=0; linha<3; linha++)
{
for(coluna=0; coluna<2; coluna++)
printf ("%5d", mt1[linha] [coluna]);
printf("\n\n");
}
//segunda matriz 2x3
printf ("Digite a matriz 2:\n");
for(linha=0; linha<2; linha++)
{
for(coluna=0; coluna<3; coluna++)
scanf("%10d", &mt2[linha][coluna]);
}
for (linha=0; linha<2; linha++)
{
for(coluna=0; coluna<3; coluna++)
printf ("%5d", mt2[linha] [coluna]);
printf("\n\n");
}
//multiplicaçao da primeira com a segunda matriz= matriz quadrada [3][3]
printf("resultado da matriz Resultante");/*agora a multiplicação das duas*/
for (linha=0;linha<3;linha++)
{
for(coluna=0;coluna<3;coluna++)
mtRES[linha][coluna]=(mt1[linha][coluna]*mt2[linha][coluna]);/*armazenando em uma terceira*/
}
for(linha=0;linha<3;linha++)
{
for(coluna=0;coluna<3;coluna++)
printf("%5d",mtRES[linha][coluna]);
printf ("\n\n");
}
system ("pause");
return 0;
}
está lendo as duas matrizes bem certinho e tal!
mas na parte da multiplicaçao tentei uma coisa mas nao deu mto certo!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 13:34:29
|
Andre Rosa
GUJ Master
![[Avatar]](/images/avatar/140132c1a7044bd6f7175e6d232cf277.jpg)
Membro desde: 22/01/2010 07:10:22
Mensagens: 1297
Offline
|
alinecs wrote://Fazer um programa que leia uma matriz M13x2e uma matriz M22x3
// e calcule a multiplicação de M1 por M2.
#include <stdio.h>
#include <stdlib.h>
int main ()
{
int mt1 [3][2], mt2 [2][3];
int linha, coluna;
int mtRES[3][3];
//primeira matriz 3x2
printf ("Digite a matriz 1:\n");
for(linha=0; linha<3; linha++)
{
for(coluna=0; coluna<2; coluna++)
scanf("%10d", &mt1[linha][coluna]);
}
for (linha=0; linha<3; linha++)
{
for(coluna=0; coluna<2; coluna++)
printf ("%5d", mt1[linha] [coluna]);
printf("\n\n");
}
//segunda matriz 2x3
printf ("Digite a matriz 2:\n");
for(linha=0; linha<2; linha++)
{
for(coluna=0; coluna<3; coluna++)
scanf("%10d", &mt2[linha][coluna]);
}
for (linha=0; linha<2; linha++)
{
for(coluna=0; coluna<3; coluna++)
printf ("%5d", mt2[linha] [coluna]);
printf("\n\n");
}
//multiplicaçao da primeira com a segunda matriz= matriz quadrada [3][3]
printf("resultado da matriz Resultante");/*agora a multiplicação das duas*/
for (linha=0;linha<3;linha++)
{
for(coluna=0;coluna<3;coluna++)
mtRES[linha][coluna]=(mt1[linha][coluna]*mt2[linha][coluna]);/*armazenando em uma terceira*/
}
for(linha=0;linha<3;linha++)
{
for(coluna=0;coluna<3;coluna++)
printf("%5d",mtRES[linha][coluna]);
printf ("\n\n");
}
system ("pause");
return 0;
}
está lendo as duas matrizes bem certinho e tal!
mas na parte da multiplicaçao tentei uma coisa mas nao deu mto certo!
Defina "coisa" e "não deu muito certo". O código esta compilando corretamente ? Se não, qual é o erro informado pelo compilador ? Qual é a saída que você espera que o programa dê ? Dê informações detalhadas como por exemplo:
Eu entro com X e o programa me retorna Y, sendo que deveria retornar J.
This message was edited 1 time. Last update was at 31/10/2010 13:35:17
|
Um programador pobre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 13:43:32
|
alinecs
What is classpath?
Membro desde: 31/10/2010 01:04:40
Mensagens: 5
Offline
|
a matriz A e B, quando digitadas aparecem corretamente!
o programa esta compilando, porém o resultado, ao inves de ser uma matriz 3x3 está aparecendo essa matriz 3x3 e
mais uns numeros estranhos q nao tem nada a ver
por exemplo, digito as matrizes:
A- 2 2
2 2
2 2
B- 3 3 3
3 3 3
o resultado é uma matriz assim
6 6 6
6 6 6
4587120-31-690246 70
esses ultimos numeros q nao sei o q significam, e nem onde está meu erro!
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 13:50:48
|
Andre Rosa
GUJ Master
![[Avatar]](/images/avatar/140132c1a7044bd6f7175e6d232cf277.jpg)
Membro desde: 22/01/2010 07:10:22
Mensagens: 1297
Offline
|
alinecs wrote:a matriz A e B, quando digitadas aparecem corretamente!
o programa esta compilando, porém o resultado, ao inves de ser uma matriz 3x3 está aparecendo essa matriz 3x3 e
mais uns numeros estranhos q nao tem nada a ver
por exemplo, digito as matrizes:
A- 2 2
2 2
2 2
B- 3 3 3
3 3 3
o resultado é uma matriz assim
6 6 6
6 6 6
4587120-31-690246 70
esses ultimos numeros q nao sei o q significam, e nem onde está meu erro!
Compilei o seu código aqui,e foi normalmente, olhe só:
resultado da matriz Resultante 6 6 6
6 6 6
4 4 4
Estou usando o Debian Linux, compilei o código com o gcc versão 4.3.2. Qual plataforma, compilador e IDE (caso esteja tenha) você esta usando ?
This message was edited 1 time. Last update was at 31/10/2010 13:51:20
|
Um programador pobre. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 31/10/2010 13:59:51
|
alinecs
What is classpath?
Membro desde: 31/10/2010 01:04:40
Mensagens: 5
Offline
|
eu uso o DEV C++ 4.9.9.2
deu certo msm???
que legal!
qual problema pode estar acontecendo entao q o resultado nao aparecer direito no meu pc??
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2010 07:59:45
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Oi.
Primeiro de tudo, o seu programa está em C, não em C++.
Segundo, ao postar códigos, por favor, use a tag code, como descrito aqui:
http://www.guj.com.br/posts/list/50115.java
Terceiro, o devcpp não é uma IDE adequada para o desenvolvimento hoje em dia. Além de ser cheia de bugs, seu compilador é bastante antigo. Recomendo que você substitua pelo Code::Blocks: http://www.codeblocks.org ou o Visual C++ Express: http://www.microsoft.com/express/
Como compilador o Code::Blocks também usa o MinGW32, mas tem o suporte correto a depuração e mostra as mensagens de erro por inteiro.
Já o Visual usa um compilador próprio, e é hoje a IDE C++ mais usada no mercado.
Quarto, sua fórmula de multiplicação de matrizes está completamente errada. A multiplicação correta segue o algoritmo:
E, finalmente, você esqueceu de zerar a matriz mtRES.
Em C++ e corrigido, seu programa ficaria assim:
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2010 08:31:09
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Se usar um pouco mais de C++, dá pra simplificar o código e evitar muita duplicação:
This message was edited 1 time. Last update was at 01/11/2010 08:31:24
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2010 09:31:54
|
entanglement
GUJ Hacker
Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline
|
ViniGodoy wrote:
E, finalmente, você esqueceu de zerar a matriz mtRES.
Pois é. Cada vez que tenho de trocar de linguagem (de Java para C++ ou vice-versa) eu me ferro com essa diferença entre as linguagens. Em Java as matrizes já vêm limpinhas (e a partir de alguma build do JDK o Arrays.fill terá exatamente o mesmo desempenho de um memset). Em C++, as variáveis de instância você tem de limpar antes, o que é sempre um porre.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2010 09:53:14
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
entanglement wrote:Pois é. Cada vez que tenho de trocar de linguagem (de Java para C++ ou vice-versa) eu me ferro com essa diferença entre as linguagens. Em Java as matrizes já vêm limpinhas (e a partir de alguma build do JDK o Arrays.fill terá exatamente o mesmo desempenho de um memset). Em C++, as variáveis de instância você tem de limpar antes, o que é sempre um porre.
Me confirme uma coisa.
No C++ não tem mesmo um jeito standard de passar matrizes bidimensionais de tamanho arbitrário por parâmetro, tem?
Isso aqui:
Até funciona com um reinterpret_cast (ouch), mas tem o funcionamento realmente garantido?
No segundo código, acabei recorrendo à templates (que na prática criará um método diferente para cada matriz).
A única alternativa portável seria recorrer mesmo ao boost::matrix?
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 01/11/2010 12:13:42
|
alinecs
What is classpath?
Membro desde: 31/10/2010 01:04:40
Mensagens: 5
Offline
|
"Terceiro, o devcpp não é uma IDE adequada para o desenvolvimento hoje em dia. Além de ser cheia de bugs, seu compilador é bastante antigo. Recomendo que você substitua pelo Code::Blocks: http://www.codeblocks.org ou o Visual C++ Express: http://www.microsoft.com/express/
Como compilador o Code::Blocks também usa o MinGW32, mas tem o suporte correto a depuração e mostra as mensagens de erro por inteiro.
Já o Visual usa um compilador próprio, e é hoje a IDE C++ mais usada no mercado."
eu uso o dev c, porque apenas faço uma cadeira da faculdade de introduçao a programaçao, nem é para trabalho,
e o professor exige q seja com esse programaa!
obrigada!
|
|
|
 |
|
|