lemuf 0 Denunciar post Postado Novembro 18, 2009 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
Giovanni Ritchie 0 Denunciar post Postado Novembro 18, 2009 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
lemuf 0 Denunciar post Postado Novembro 18, 2009 #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
lemuf 0 Denunciar post Postado Novembro 18, 2009 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
VictorCacciari 42 Denunciar post Postado Novembro 18, 2009 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