Isabella Postado Dezembro 17, 2008 Denunciar Share Postado Dezembro 17, 2008 Olá pessoa estou tentando trocar a linha 1 com a linha 3, porém não estou conseguindo irei colocar o código para que possam me ajudar#include <stdio.h> #include<stdlib.h> main() { int m[3][3],lin,col,aux=0; for(lin=0;lin<3;lin++) for (col=0;col<3;col++) { printf("\n Digite o elemento M[%d][%d]=", lin+1, col+1); scanf ("%d",&m[lin][col]); } printf ("\n\n"); lin == 0; for (lin=1;lin<=3;lin++) for(col=1;col<=3;col++) { if (lin == 0) aux =m[1][col]; m[1][col]=m[3][col]; m[3][col]=aux; } for(lin=0; lin<3; lin++) { for(col=0;col<3;col++) printf("%d",m[lin][col]); printf("\n"); } system("pause"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 18, 2008 Denunciar Share Postado Dezembro 18, 2008 lin == 0;for (lin=1;lin<=3;lin++)if (lin == 0)A primeira linha não faz sentido. Você usou o operador de igualdade, em vez do de atribuiçãoVocê fez um loop com lin começando em 1, logo a comparação da terceira linha nunca retornará trueA matriz m vai de 0 a 2. Não existe o índice 3.Para trocar as linhas, vocÊ tem que criar um novo vetor. Esse "aux" não pode ser um inteiro, tem que ser um vetor de trÊs posições de inteiros. Ao encontrar a primria linha, atribua aos índices de aux os índices de m[0]. Atribua a m[0] os valores de m[2] e a m[2] os valores de aux.É como o velho programa troca(), mas em vez de trocar valores entre inteiros simples, faz troca entre vetores.OBS: não precisa de loop para fazer esse programa, uma vez que você sabe exatamente em quais linhas mexer. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isabella Postado Dezembro 18, 2008 Autor Denunciar Share Postado Dezembro 18, 2008 (editado) Agora tntei esse, so aparece os valores, nema matriz quer aparecer#include <stdio.h> #include<stdlib.h> main() { int m[3][3],lin,col,aux[3][3],x,y,linha=0; for(lin=0;lin<3;lin++) for (col=0;col<3;col++) { printf("\n Digite o elemento M[%d][%d]=", lin, col); scanf ("%d",&m[lin][col]); } printf ("\n\n"); for (lin=0;lin<3;lin++) for(col=0;col<3;col++) { if (linha = 0) aux[x][y] =m[0][col]; m[0][col]=m[2][col]; m[2][col]=aux[x][y]; } for(lin=0; lin<3; lin++) { for(col=0;col<3;col++) printf("%2d",aux[x][y]); printf("\n"); } system("pause"); } Editado Dezembro 18, 2008 por Isabella Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 18, 2008 Denunciar Share Postado Dezembro 18, 2008 (editado) #include <stdio.h> #include<stdlib.h> int main() { int m[3][3],lin,col,aux[3]; for(lin=0;lin<3;lin++) for (col=0;col<3;col++) { printf("\n Digite o elemento M[%d][%d]=", lin, col); scanf ("%d",&m[lin][col]); } printf ("\n\n"); aux[0] = m[0][0]; aux[1] = m[0][1]; aux[2] = m[0][2]; m[0][0]=m[2][0]; m[0][1]=m[2][1]; m[0][2]=m[2][2]; m[2][0]=aux[0]; m[2][1]=aux[1]; m[2][2]=aux[2]; for(lin=0; lin<3; lin++) { for(col=0;col<3;col++) printf("%2d",m[lin][col]); printf("\n"); } return 0; }Não precisa de loop. ;)Em C, não há como atribuir uma matriz a outra; é necessário copiar elemento por elemento Editado Dezembro 18, 2008 por Beraldo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Isabella Postado Dezembro 18, 2008 Autor Denunciar Share Postado Dezembro 18, 2008 Impossivel ser isso ae deve ter outro jeito porque se fosse uma matriz 1 milhao por 1 milhao?você iria escrever todos?não da não é?. . . . Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 19, 2008 Denunciar Share Postado Dezembro 19, 2008 vocÊpode fazer um loop para copiar os valores das colunas, mas se você sabe quais linhas substituir, não precisa de loop para encontrar as linahs. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kuroi Postado Dezembro 21, 2008 Denunciar Share Postado Dezembro 21, 2008 isabella, o problema é q o indice vai do 0 ao 2. olha aqui nesse for:for(col=1;col<=3;col++)você ta pegando de 1 a 3. mas não é isso, a primera coluna na verdade é a 0 e a tercera é a 2.nos otros fors você fez certo.e você não precisa fazer um for para as linhas, porque você já sabe q linha quer trocar não é?? é so fazer o for da coluna, a logica pra trocar tava certa no primero post, aux não precisa ser uma matriz. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Dezembro 23, 2008 Denunciar Share Postado Dezembro 23, 2008 Em C, não há como atribuir uma matriz a outra; é necessário copiar elemento por elementoBeraldo, atribuir até que não dá, mas e quanto a copiar?O uso da função memcpy, deveria ter esta finalidade. (considerando duas matriz de igual definição)Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Isabella
Olá pessoa estou tentando trocar a linha 1 com a linha 3, porém não estou conseguindo irei colocar o código para que possam me ajudar
Link para o comentário
Compartilhar em outros sites
7 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.