Ir para conteúdo

Arquivado

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

rafaeloliveira83

[Resolvido] Ordenar 2 datas em ordem crescente

Recommended Posts

Ele ordena certo, mas aparece 3 datas, por exemplo:

 

Ex 1:

Data 1: 11/09/2000

Data 2: 10/07/2006

 

Ex 2:

Data 1: 10/07/2006

Data 2: 11/09/2000

 

Resultado:

 

11/09/2000

10/07/2006

10/07/2006 Está aparecendo a mais

 

 

 

Program Datas;
uses crt;
var
dia, dia2, mes, mes2, ano, ano2 : integer;
begin
clrscr;
writeln('Insira o Dia ( DD )');
readln(dia);
writeln('Insira o Mes ( MM )');
readln(mes);
writeln('Insira o Ano ( AAAA)');
readln(ano);
writeln('Insira o Dia 2 ( DD )');
readln(dia2);
writeln('Insira o Mˆs 2 ( MM )');
readln(mes2);
writeln('Insira o Ano 2 ( AAAA )');
readln(ano2);


if (ano2 > ano ) then
writeln(dia, '/', mes, '/', ano)
else
writeln(dia2, '/', mes2, '/', ano2);


   if (mes2 > mes ) then
   writeln(dia, '/', mes, '/', ano)
   else
   writeln(dia2, '/', mes2, '/', ano2);


      if (dia2 > dia ) then
      writeln(dia, '/', mes, '/', ano)
      else
      writeln(dia2, '/', mes2, '/', ano2);

readkey;
end.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu erro está na forma em como esta tratando as condições, faça algo assim:

Se (ano2 > ano) Então 
    .
    .
Senão Se (ano > ano2) Então
    .
    .
    Senão 
        . 
        .
.
.

entendeu??

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda não entendi

 

 

Seu erro está na forma em como esta tratando as condições, faça algo assim:

Se (ano2 > ano) Então 
    .
    .
Senão Se (ano > ano2) Então
    .
    .
    Senão 
        . 
        .
.
.

entendeu??

 

[]s

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui fazer:

 

Ficou assim:

 

Program DatasCrescentes;
uses crt;
var
dia, dia2, mes, mes2, ano, ano2, aux : integer;
begin
clrscr;
writeln('Insira o Dia ( DD )');
readln(dia);
writeln('Insira o Mes ( MM )');
readln(mes);
writeln('Insira o Ano ( AAAA)');
readln(ano);
writeln('Insira o Dia 2 ( DD )');
readln(dia2);
writeln('Insira o Mes 2 ( MM )');
readln(mes2);
writeln('Insira o Ano 2 ( AAAA )');
readln(ano2);


if (ano2 > ano ) then
begin
writeln(dia, '/', mes, '/', ano);
writeln(dia2, '/', mes2, '/', ano2);
end

else
  if ( ano > ano2 ) then
   begin
    writeln(dia2, '/', mes2, '/', ano2);
    writeln(dia, '/', mes, '/', ano);
   end

  else
    if (mes2 > mes ) then
      begin
   	writeln(dia, '/', mes, '/', ano);
   	writeln(dia2, '/', mes2, '/', ano2);
      end

    else
      if ( mes > mes2 ) then
        begin
         writeln(dia2, '/', mes2, '/', ano2);
         writeln(dia, '/', mes, '/', ano);
      end

      else
        if (dia2 > dia ) then
          begin
           writeln(dia, '/', mes, '/', ano);
           writeln(dia2, '/', mes2, '/', ano2);
          end

        else
          if ( dia > dia2 ) then
            begin
             writeln(dia2, '/', mes2, '/', ano2);
             writeln(dia, '/', mes, '/', ano);
            end;

readkey;
end.

Agora ele ordena as datas em ordem crescente corretamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bem lembrado.

Se as duas datas forem iguais:

 

Program DatasCrescentes;
uses crt;
var
dia, dia2, mes, mes2, ano, ano2 : integer;
begin
clrscr;
writeln('Insira o Dia ( DD )');
readln(dia);
writeln('Insira o Mes ( MM )');
readln(mes);
writeln('Insira o Ano ( AAAA)');
readln(ano);
writeln('Insira o Dia 2 ( DD )');
readln(dia2);
writeln('Insira o Mes 2 ( MM )');
readln(mes2);
writeln('Insira o Ano 2 ( AAAA )');
readln(ano2);

if (ano2 > ano ) then
begin
writeln(dia, '/', mes, '/', ano);
writeln(dia2, '/', mes2, '/', ano2);
end

else
  if ( ano > ano2 ) then
   begin
    writeln(dia2, '/', mes2, '/', ano2);
    writeln(dia, '/', mes, '/', ano);
   end

  else
    if (mes2 > mes ) then
      begin
        writeln(dia, '/', mes, '/', ano);
        writeln(dia2, '/', mes2, '/', ano2);
      end

    else
      if ( mes > mes2 ) then
        begin
         writeln(dia2, '/', mes2, '/', ano2);
         writeln(dia, '/', mes, '/', ano);
      end

      else
        if (dia2 > dia ) then
          begin
           writeln(dia, '/', mes, '/', ano);
           writeln(dia2, '/', mes2, '/', ano2);
          end

        else
          if ( dia > dia2 ) then
            begin
             writeln(dia2, '/', mes2, '/', ano2);
             writeln(dia, '/', mes, '/', ano);
            end

          else
            if ( dia = dia2 ) and ( mes = mes2 ) and ( ano = ano2) then
              begin
               writeln(dia,'/',mes,'/',ano);
               writeln(dia2,'/',mes2,'/',ano2);
              end;
readkey;
end.

Como as duas são iguais e tem que ordenar em ordem crescente é mostrado duas vezes.

Perfeito e testado no Free Pascal!

Compartilhar este post


Link para o post
Compartilhar em outros sites

aeee agora sim ;D

+ eu acho q esse ultimo if n é necessario, pq se ele n respeitar nenhuma condição acima, com ctz as datas serão iguais ;D

 

´[]s

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.