zezima Posted May 6, 2012 at 07:06 PM Report #453445 Posted May 6, 2012 at 07:06 PM boas, estou com uma duvida que e a seguinte, eu tenho uma estrutura com uma serie de variaveis e quero imprimir essas variaveis que fazem parte da estrutura com uma ordenação espicifica. Como por exemplo eu tenho uma estrutura que tem 3 inteiros(a,b e c) e quero imprimi-los por ordem crescente do valor de a... Como e que faço isto? 😄 Cumps
HappyHippyHippo Posted May 6, 2012 at 07:51 PM Report #453449 Posted May 6, 2012 at 07:51 PM usas um algoritmo de ordenação IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
zezima Posted May 6, 2012 at 08:01 PM Author Report #453450 Posted May 6, 2012 at 08:01 PM pois, ja tinha pensado nisso mas eu quero ordenar numeros com varios digitos como por exemplo 1234 com 4044 e nao ordenar o 1 o 2 o 3 e o 4.Que algoritmo e que me aconselhas ? Obrigado pela resposta
HappyHippyHippo Posted May 6, 2012 at 08:05 PM Report #453452 Posted May 6, 2012 at 08:05 PM para começar : o mais simples = bubble sort PS : o que ordenas é indiferente do tipo de dados, depende somente do método de comparação IRC : sim, é algo que ainda existe >> #p@p Portugol Plus
zezima Posted May 6, 2012 at 08:15 PM Author Report #453453 Posted May 6, 2012 at 08:15 PM O meu problema esta quando por exemplo typedef struct { int dia,mes,ano; }data_voo; no main tenho um vector desta estrutura que vai recebendo 3 inteiros a cada ciclo e quero imprimir por ordem crescente do inteiro mes, o dia e o ano correspondentes...como e que eu faço?
bsccara Posted May 6, 2012 at 08:29 PM Report #453456 Posted May 6, 2012 at 08:29 PM Podes usar a função 'qsort' (http://pubs.opengroup.org/onlinepubs/9699919799/) para ordenar o vector, usando a seguinte função para comparar: int compara(const void * elem1, const void * elem2) { int indice1, indice2; /* Calcula índice da primeira data */ indice1 = (data_voo *)elem1->dia + (data_voo *)elem1->mes * 31 + (data_voo *)elem1->ano * 31 * 12; /* Calcula índice da segunda data */ indice2 = (data_voo *)elem2->dia + (data_voo *)elem2->mes * 31 + (data_voo *)elem2->ano * 31 * 12; return indice1 - indice2; }
zezima Posted May 6, 2012 at 08:38 PM Author Report #453460 Posted May 6, 2012 at 08:38 PM Nao percebi essa soluçao mas obrigado pela resposta, eu vou dar o codigo que tou a trabalhar e mais facil typedef struct { int data,codigo_voo,n_passageiros,hora_partida,hora_chegada; char cod_origem[DIM],cod_chegada[DIM]; }informacao; eu vou guardando a informacao num vector deste tipo e eu agora quero ordenar de acordo com a variavel hora_partida e depois imprimir o codigo_voo, a data_voo,hora_partida;hora_chegada e os cods de origem e chegada.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now