tuga Postado Novembro 29, 2006 Denunciar Share Postado Novembro 29, 2006 eieu queria multiplicar duas matrizes para comparar com outra pra fazer um sistema tipo "A.x=B"ex:matrizA=[2,3,5] matrizx= [u1] matrizB= [6] [0,2,5] [u2] [0] [0,0,6] [u3] [0]para isso utizei ciclosfor(m=0;n<=m;m++) for(n=0;m<= n;n++) matrixA[m][n]. matrixu[m][1]=Uh;mas não tenho certeza...digão alguma coisa,,,,obrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Novembro 29, 2006 Denunciar Share Postado Novembro 29, 2006 a multiplicacão de matrizes possui algumas regras, vamos a elas:temos 2 matrizes A(x,y) e B(m,n)A . B só é possível se e somente se y = m. A matriz resultante seria do tipo x,n.B . A só é possível se e somente se n = x. A matriz resultante seria do tipo m,y.então primeira coisa que precisa fazer é testar se número de colunas de uma é igual ao número de linhas da outra.se sim, é possível fazer o cálculousualmente voce usa 2 ou mais loop para fazer essa multiplicacão sua lógica toda vai estar baseada nos índices da matriz. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 tuga Postado Novembro 29, 2006 Autor Denunciar Share Postado Novembro 29, 2006 mas digamos que a matriz A[m][n] x B[j][1] = C[m][1] em que m=n=j as matrizes A é quadradaeu teria de fazer 2 loopfor(m=0;m=j;m++) for(j=0;j=m;j++) matrizC[j]=matrizA[m][n] x matrizB[m][1]era mais ou menos isto mas como é que se faz para incrementar no [n]????????*já agora como é que se põe os anexos "code" que costumo ver e não sei como por e assim o codigo não fica direito!! se pudessem responder a tudo agredecia muitoobrigado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Novembro 30, 2006 Denunciar Share Postado Novembro 30, 2006 mas digamos que a matriz A[m][n] x B[j][1] = C[m][1] em que m=n=j as matrizes A é quadradaeu teria de fazer 2 loopfor(m=0;m=j;m++)for(j=0;j=m;j++)matrizC[j]=matrizA[m][n] x matrizB[m][1]era mais ou menos isto mas como é que se faz para incrementar no [n]????????para multiplicacao de uma matriz qualquer voce pode usar 3 loops um que controla a Linha de A, outro que controla a Coluna de B e outro que controla a Coluna de A. #include<stdio.h> #include<stdlib.h> int main(){ int la=2, lb, ca=3,cb, x, y, z; cb=la;// definicao lb=ca; // definicao for(x=0;x<la;x++){ for(y=0;y<cb;y++){ for(z=0;z<ca;z++){ printf("Matriz A[%i][%i] * B[%i][%i]\n", x, z, z, y); } } } exit(0); } *já agora como é que se põe os anexos "code" que costumo ver e não sei como por e assim o codigo não fica direito!!para iniciar o código coloque a a palavra "code" entre colchetese para encerrar use "[/" seguido da palavra "code" seguido de ]" Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 heltonritter Postado Setembro 14, 2007 Denunciar Share Postado Setembro 14, 2007 Estou tendo C na faculdade também....Ví o tópico e achei que outros que pesquisarem podem se beneficiar. Código abaixo de um programa que faz a multiplicação de matriz quadrada de tamanho informado pelo usuário./* Autor: Helton Eduardo Ritter 2º Semestre Sistemas de Informação SETREM Data: 26/08/2007 Programa: Multiplicação de matrizes quadradas de n tamanho Crie duas matrizes quadradas de tamanho informado pelo usuário, faça a multiplicação e aramzene o resultado em uma terceira matriz. Mostre o resultado. */ #include <stdio.h> int main() { // variável que vai guardar o tamanho das matrizes, informado pelo // usuário, vai servir também para controle dos loops do programa int iTm; printf("Quer calcular matrizes quadradas de que tamanho? "); scanf("%d",&iTm); { // fMA = tipo float, a primeira matriz, os dados serão informados pelo // usuário // fMB = matriz B informada pelo usuário // fMR = matriz Resultado, os valores serão calculados e atribuidos // aos índices dessa matriz //fTemp = antes da matriz R receber o valor, os valores são acumulados // nessa variável float fMA[iTm][iTm],fMB[iTm][iTm],fMR[iTm][iTm],fTemp; // iL e iC = variáveis inteiras que serão usadas para controlar os laços // de leitura e para calcular os valores //iTempL e iTempC = variáveis que são usadas para saber qual o índice // na B matriz que deve ser multiplicado pelo // índice que está sendo passado na matriz A int iL,iC,iTempL=0,iTempC=0; //lê os valores da matriz A, passando pela leitura das três // colunas em cada uma das linhas for(iL=0;iL <iTm;iL++) { for(iC=0;iC<iTm;iC++) { printf("Matriz A valor da linha %d coluna %d: ",(iL+1),(iC+1)); scanf("%f",&fMA[iL][iC]); } // apenas para o usuário identificar mais fácil quando passou // para os valores da outra linha da matriz printf("\n"); } //O mesmo que na matriz A só que para a matriz B for(iL=0;iL <iTm;iL++) { for(iC=0;iC<iTm;iC++) { printf("Matriz B valor da linha %d coluna %d: ",(iL+1),(iC+1)); scanf("%f",&fMB[iL][iC]); } printf("\n"); } // Mostra para o usuário como ficou a matriz A que ele digitou printf("\nMATRIZ A:\n\n"); for(iL=0;iL <iTm;iL++) { for(iC=0;iC<iTm;iC++) { printf("%4.2f\t",fMA[iL][iC]); } printf("\n"); } // Mostra para o usuário como ficou a matriz B que ele digitou printf("\nMATRIZ B:\n\n"); for(iL=0;iL <iTm;iL++) { for(iC=0;iC<iTm;iC++) { printf("%4.2f\t",fMB[iL][iC]); } printf("\n"); } // dentro deste bloco for vai ser feito o cálculo da matriz resultado // e exibido os valores printf("\nMATRIZ C, RESULTADO:\n\n"); // passa todas as linhas da matriz A for(iL=0;iL <iTm;iL++) { // passa todas as colunas da matriz A for(iC=0;iC<iTm;iC++) { // quando chegar a execução aqui estamos posicionados em // uma linha e uma coluna específica de A, estamos em UM dos // valores de A // limpa o fTemp, pois nele serão acumulados os valores // calculados fTemp=0; // a multiplicação e soma deve ir avançando nas colunas de A // e nas linhas de B, mas mantendo a mesma colunas de B // aqui iTempL controla as Colunas de A e Linhas de B // quando chegar em 2 já leu as iTm colunas de A e as três //linha de B no primeiro índice de cada linha while(iTempL < iTm) { // fTemp recebe o que já tinha + a multiplicação // da Linha/coluna atual e sua linha/coluna correspondente // a coluna correspondente vai ser a mesma do índice da linha // atual fTemp=(fTemp +(fMA[iL][iTempL] * fMB[iTempL][iTempC])); // fez o primeiro cálculo, na matriz A tem que avançar 1 // para a direita, e na Matriz B tem que avançar uma linha // para baixo, mantendo o o índice de coluna igual ao índice de // linha da matriz A iTempL++; } // fim do while que calcula os valores // quando termina o while, significa que já calculou o UM dos // valores da matriz resultado, mas tem que calcular o próximo // por isso incrementa 1 na coluna de B, e zera i índice da linha // pois tem que multiplicar desde o iício de cada linha // por todos da coluna iTempC++; iTempL=0; // mostra esse um valor já encontrado printf("%4.2f\t",fTemp); // já temos um valor calculado, entâo gaurdamos ele na matriz // resultado. fMR[iL][iC]=fTemp; // limpa o fTemp, pois ele vai acumulando, e agora servirá // para calcular o próximo valor fTemp=0; } // fim do for que vare as colunas // quando terminou de calcular todos os valores dessa linha, zera o índice // da coluna, pois a próxima linha, terá que multiplicar desde o primeiro // índice de coluna matriz correspondente iTempC=0; // aqui é o ponto que temos todos os valores de uma linha calculados // estamos iniciando o cálculo da seguinte, damos uma quebra de linha // para a saída dos valores se parecer com uma matriz printf("\n"); } // fim do for que vare as linhas } // agurada um ENTER para fechar o programa getchar(); getchar(); return 0; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
tuga
ei
eu queria multiplicar duas matrizes para comparar com outra pra fazer um sistema tipo "A.x=B"ex:
matrizA=[2,3,5] matrizx= [u1] matrizB= [6]
[0,2,5] [u2] [0]
[0,0,6] [u3] [0]
para isso utizei ciclos
for(m=0;n<=m;m++)
for(n=0;m<= n;n++)
matrixA[m][n]. matrixu[m][1]=Uh;
mas não tenho certeza...digão alguma coisa,,,,obrigado
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.