Ir para conteúdo

POWERED BY:

Arquivado

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

lemuf

[Resolvido] Problema envolvendo matrizes

Recommended Posts

Pessoal, me cadastrei hj, pois estou na dúvida sobre um exercicio envolvendo matrizes, aqui vai:

 

Dada uma matriz A, de elementos do tipo real, troque a linha L com a linha K. A matriz A, os valores de L e K, são dados como entrada. Imprimir a matriz A original e a matriz final.

 

Eu montei o pseudocódigo só que estou com tremenda duvida na hora de trocar as posições entre a linha L e K. Admiti a possiblidade de um vetor a fim de concretizar o processo, porém ñ consegui me organizar claramente.

Se, inicialmente, mandar ler as linhas L e K e após essa etapa, falar que :

C(i) recebe A(K,j)

A(K,j) recebe A(L,j)

B(i,j) recebe C(i)

Não sei ao certo se essa etapa está certa.

Obs : eu já tinha lido a matriz posteriormente.

 

Obg, antes de qlquer coisa

até mais

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa.. beleza?

É o seguinte, você só precisa fazer aquele lance da troca usando variaveis auxiliares ou temporarias, ou seja, é o mesmo que ter a, b e temp, você quer colocar o valor de a em b e o de b em a entao você pega o valor de a colocam em temp, pega o valor de b coloca em a e pega o valor de temp e coloca em b. E pronto, ta trocado... ;)

 

Eu sei que falar é simples, por isso vamos colocar a solução mais proxima do que você deseja;

   // lembrando, é apenas um algoritmo, n tamos procudados com regras sintaticas da linguagem 
   // em que o codigo posteriormente será implementado   
   matriz[m][n];
   temp[n];// esse vai ser o nosso vetor temporario 

   // coloco tudo da linha k no vetor
   para i = 0 ate n-1 faça
     temp[i] = matriz[k][i];
   // agora coloco toda linha l no lugar d k
   para i = 0 até n-1 faça
      matriz[k][i]=matriz[l][i];
   // pra finalizar é soh botar o que ta no vetor temporario na linha l
   para i = 0 até n-1 faça 
      matriz[l][i] = temp[i];

  // e pronto... foi trocado

Concerteza existem formais mais simplificas e talvez mais eficientes, pórem menos légiveis para entender a ideia de primeira.... Espero ter ajudado!

 

Abraço http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

#include <stdio.h>
#include <conio.h>
main()
{
      int A[20][20],i,j,C[20],L,K,n,a,b;
      scanf("%d",&n);
      while(n<0)
      {
                printf("valor incorreto");
      printf("digite outro valor");
      scanf("%d",&n);
      }
      for(a=1;a<=n;a=a+1)
      {for(b=1;b<=n;b=b+1)
       {
                          scanf("%d",&A[a][b]);
                          }
                          }
                          printf("Escolha as linhas a serem trocadas\n");
                          scanf("%d %d",&K,&L);
                          
          for(i=1;i<=n;i=i+1)
                             {C[i]=A[K][i];}
                             
           for(i=1;i<=n;i=i+1)
                            { A[K][i]=A[L][i];}
                                      
           for(i=1;i<=n;i=i+1)
                           { A[L][i]=C[i];}
                           
           for(L=1;L<=n;L=L+1)
                           {for(i=1;i<=n;i=i+1)
                           {printf("%2d",A[L][i]);}
                           printf("\n");}
                           
            for(a=1;a<=n;a=a+1)
              {for(b=1;b<=n;b=b+1)
               {printf("%2d",A[a][b]);}
               printf("\n");
               }
               for(i=1;i<=n;i=i+1)
               {printf("%2d",C[i]);
               }
               getch();}

Então, eu fiz esse código, só que estou na dúvida na hora da impressão, não sei o porquê imprime duas matrizes iguais, além, é claro do vetor C.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal consegui, graças, como é bom terminar um exercicio

xD, só coloquei a impressão da matriz A[a] dps do scanf da própria matriz

Não faço ideia pq deu certo(imagino o porquê)

hehe, mas o q importa é a intenção

Compartilhar este post


Link para o post
Compartilhar em outros sites

lemuf,

 

Lembrando que, uma vez que tenhas uma operação de multiplicação de matrizes bem definida,

é possível operar matrizes elementares de forma a obter troca de linha/colunas e multiplicação de uma linha/coluna por um escalar.

Esse seria o "jeito matemático" de o fazer, por exemplo, dada a matriz A:

1   2   3   4
4   5   6   7
8   9   10  11
12  13  14  15

e uma matriz P(i, j), obtida a partir da matriz identidade de ordem N, trocando a linha i com a linha j,

exemplo, P(1, 3):

0   0   1   0
0   1   0   0
1   0   0   0
0   0   0   1

Podemos efetuar a multiplicação: P(1, 3) . A

e obter a matriz:

8   9   10  11
4   5   6   7
1   2   3   4
12  13  14  15

Não restam dúvidas que usar um array auxiliar é muito mais eficiente, mas essa forma é "matemáticamente correta" e pode ser feita no papel e não só num computador.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

ps.: marcarei como resolvido

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.