Advertisement
sapitando

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

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