Advertisement
sapitando

Ordenador de números em Pascal(Array) - Versão simplificada.

Jul 29th, 2016
292
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.25 KB | None | 0 0
  1. { Autor : Tiago Portela
  2.   Email : sapitando@gmail.com
  3.   Sobre o programa : Versão simples de um Ordenador de números, pra ficar mais fácil entender o código.
  4.                      Ele ordena os números buscando o ultima menor e colocando ele em primeiro,
  5.                      e deslocando todos a frente e pulando ele mesmo depois.
  6.                      Ele ordena n números, trocando o valor de MaxSizeList.
  7.                      Ele ordena uma faixa trocando o valor de FirstPos e LastPos, por exemplo
  8.                      se a array fosse "10 11 4 1 2 3 25 23 12 10" e vocêˆ atribuísse a "FirstPos := 3"
  9.                      e "LastPos := 6" o resultado seria "10 11 1 2 3 4 25 23 12 10" e também ordenaria
  10.                      algumas posições trocando por exemplo "for PosArray := FirstPos to (LastPos - 1) do" por
  11.                      "for PosArray := FirstPos to 4 do" a mesma array ficaria  "1 2 3 4 10 11 25 23 12 10".
  12.                      Compatível com Turbo Pascal e Free Pascal.
  13.   Obs. : Apenas tentando aprender algorítimos, sozinho, por hobby. }
  14. {$G+}
  15. {$N+}
  16. program ordenador_de_numeros_versao_simplificada;
  17. uses crt;
  18.  
  19. const MaxSizeList = 10;
  20.  
  21. var Nro : array [1..MaxSizeList] of real;
  22.     NroAux1, NroAux2 : real;
  23.     PosArray, PosLastSmaller, CounterPos, TotalPos, LastPos, FirstPos : word;
  24.  
  25. begin
  26.  clrscr;
  27.  Nro[1] := 8.45;
  28.  Nro[2] := 1;
  29.  Nro[3] := 4;
  30.  Nro[4] := 2;
  31.  Nro[5] := 15;
  32.  Nro[6] := 6;
  33.  Nro[7] := 7;
  34.  Nro[8] := 3;
  35.  Nro[9] := 8;
  36.  Nro[10] := 5;
  37.  
  38.  TotalPos := MaxSizeList;
  39.  FirstPos := 1;
  40.  LastPos := 10;
  41.  
  42. for PosArray := FirstPos to (LastPos - 1) do
  43.  begin
  44.   NroAux1 := Nro[PosArray];
  45.   PosLastSmaller := PosArray;
  46.   for CounterPos := (PosArray + 1) to LastPos do
  47.    if NroAux1 >= Nro[CounterPos]
  48.    then begin;
  49.          PosLastSmaller := CounterPos;
  50.          NroAux1 := Nro[PosLastSmaller];
  51.         end;
  52.  
  53.   if PosLastSmaller > PosArray
  54.   then begin
  55.         for CounterPos := PosArray to LastPos do
  56.          begin
  57.           if (CounterPos >= PosLastSmaller) and (CounterPos < LastPos)
  58.           then NroAux2 := Nro[CounterPos + 1]
  59.           else NroAux2 := Nro[CounterPos];
  60.           Nro[CounterPos] := NroAux1;
  61.           NroAux1 := NroAux2;
  62.          end;
  63.        end;
  64.  end;
  65.  
  66. for CounterPos := 1 to TotalPos do
  67.  writeln(CounterPos : 5,' : ',Nro[CounterPos] : 5 : 2);
  68. readkey;
  69. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement