Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

EyeLook

Ordenar com Pointers

Mensagens Recomendadas

EyeLook

Olá outra vez!

Desta vez preciso de uma pequena ajuda. Eu queria ordenar aqui umas coisas usando Pointers mas levar a informação.

Vamos imaginar o seguinte: um parque de estacionamento onde tenho matricula, ano, dono, cor sei lá. informações (num record obvio)

O que eu queria fazer era por exemplo ordenar os carros por ordem de ano (do maior para o menor) e levar a informação do carro. E é aí que eu erro, pois ele ordena mas não leva a informação. Alguma ajuda? Eu pensei em criar variáveis auxiliares para ir guardando e mostrando, mas não funciona :/

Editado por EyeLook

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
nunopicado

Mas é mesmo uma variável auxiliar, mas não para o ano, e sim do mesmo tipo do pointer completo.

Usas por exemplo o algoritmo BubbleSort (há vários exemplos do algoritmo, mesmo no tutorial de pascal do Thoga31 aqui no fórum).

Mas embora compares apenas o ano de cada dois registos, ao fazer a troca, não trocas só o ano, trocas todo o ponteiro.

Alguma dúvida, avisa!


"A humanidade está a perder os seus génios... Aristóteles morreu, Newton já lá está, Einstein finou-se, e eu hoje não me estou a sentir bem!"

> Não esclareço dúvidas por PM: Indica a tua dúvida no quadro correcto do forum.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
EyeLook

Então tenho algo como isto mas continua a dar mal ehehe.

for i:=1 to cont-1 do
   begin
       Ap:=Aux;
       Pa:=Aux^.Prox;
   for n:=1 to cont-1 do
   begin
           if (Ap^.ano > Pa^.ano) then
           begin
               xord:=Ap^.ano;
               Ap^.ano:=Pa^.ano;
               Pa^.ano:=xord;

               matricula2:=Ap^.matricula;
               contacto2:=Ap^.contacto;
               seguro2:=Ap^.seguro;
               cor2:=Ap^.cor;


          //Px:=Px^.Prox;
          //Pa:=Pa^.Prox;
           end;
  // Ap:=Ap^.Prox;
  // Pa:=Pa^.Prox;
   end;
   //Ap:=Aux;
   end;

Agora a dúvida são essas linhas de código "ocultas" em comentário.

Editado por thoga31
GeSHi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
passarito

Boas,

O processo para mudar um registo de um sitio para o outro é essencialmente desta forma:

Lista: A->B->C->D

Registo auxiliar: X

Objectivo: Colocar C entre A e B

^X=^B (X fica a apontar para C)

^B=^C (B fica a apontar para D)

^C=^A (C fica a apontar para B)

^A=^X (A fica a apontar para C)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.