Array de números aleatórios não-repetidos de um intervalo em Pascal

Publicado por Perfil removido (última atualização em 23/04/2012)

[ Hits: 13.347 ]

Download alea001.pas




Este programa feito em Pascal preenche um array (vetor) de números inteiros de um intervalo dado (de 1 até VALOR) com valores inteiros aleatórios deste intervalo.

Não sei como está agora, mas Pascal era primeira linguagem de cursos técnicos e universitários ao se ensinar algoritmos no 1º ciclo.

Tinha ganho vida nova através do Object Pascal presente no Delphi. Que ultimamente não tenho visto muita coisa por aí...

Ele consegue ser compilado com gpc (GNU Pascal) e fpc (Free Pascal).

Há uma pequena "gambiarra" no código:

Pelo menos foi assim que consegui fazer funcionar em ambos os compiladores.

$ gpc alea001.pas -o alea001 # para usar gpc

ou

$ fpc alea001.pas # para usar fpc

Ambos os compilados são enormes se comparado com o compilado em C.

A vantagem de se usar gpc é que dá pra usar o gdb (GNU Debugger). Basta colocar a opção "-ggdb" no comando de compilação do gpc.

Há também um debugger próprio do Free Pascal, mas o gdb é mais popular.

Não tenho a menor ideia se funciona em Turbo Pascal, nem garantia no Dev-Pascal :-)

  



Esconder código-fonte

Program alea001;

{$ifndef __GPC_RELEASE__} Uses Crt; {$endif}   {  <----- Gambiarra para funcionar com "gpc" }

{
   Para testar se não há números repetidos, usar por exemplo:
   alea001 | sort -n --key=2
}

Const
   VALOR = 52;

Var
   vec         : Array [1..VALOR] of Integer;
   i, j, k, n      : Integer;

Begin

   Randomize;

   i := 1;
   n := VALOR;

   While i<=n Do Begin 
      vec[i] := -1;
      Inc(i);
   End;

   i := 1; j := 0;

   While i<=n Do Begin 

      j := 1 + Random(n);
      k := 1;

      While (k<=i) And (vec[k]<>j) Do Inc(k);

      If k=i+1 Then Begin 
         vec[i] := j;
         Inc(i);
      End;

   End;

   i := 1;

   While i<=n Do Begin 
      WriteLn (i, #9, vec[i]);
      Inc(i);
   End;

   WriteLn;

End.

Scripts recomendados

Tratamentos de Erros

Tocador de Vídeo (Lazarus)

Função Fatorial Recursiva em Ada 95

Extenso em dll, com parâmetros adicionais

Crivo de Eratóstenes Simples em Ada 95


  

Comentários

Nenhum comentário foi encontrado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts