Ir para conteúdo

POWERED BY:

Arquivado

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

rdm

[Resolvido] Código

Recommended Posts

Olá pessoal, primeiramente gostaria de dizer que sou novo no fórum e também na área de programação.

 

Estou cursando a disciplina de Delphi na faculdade e estou com uma dificuldade em resolver um probleminha.

 

Preciso preencher um vetor de 5 posições com valores randômicos mas que não sejam repetidos, pois preciso usar isso em uma aplicação.

 

Eu usei uma function e desenvolvi um código mas ele não está conseguindo fazer certinho. Ele repete de vez em quando o primeiro valor do vetor, ou seja, de vez em quando a primeira posição do vetor tem valor igual a outra posição.

 

Abaixo está a function e o código, gostaria que alguém pudesse me dar uma ajuda e ver se tem algum erro.

 

 

 

 

valor_aposta é um vetor de inteiros

 

function testa_valor(a : array of integer; e : integer) : boolean;

var i : integer;
begin
    testa_valor := false;
    for i := 1 to max do
       begin
          if e = a[i] then
            begin
            testa_valor := true;
            break;
            end;
        end;
end;


procedure TForm1.btn_Sorteia_ApostaClick(Sender: TObject);

var i,a : integer;

begin
    lbn_Aposta.Caption := '';

    for I := 1 to Max do
      begin
        valor_aposta[i] := -1;
      end;

    for I := 1 to Max do
      begin
          a:= random(10);

          while testa_valor(valor_aposta,a) do
             begin
               a := random(10);
             end;

             valor_aposta[i] := a;
      end;

         for I := 1 to Max do
          lbn_Aposta.Caption := lbn_Aposta.Caption + inttostr(valor_aposta[i]) + #13 + #13;
end; 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já debugou o código para ver se o seu teste está retornando o valor corretamente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você já debugou o código para ver se o seu teste está retornando o valor corretamente?

 

Não debuguei mas encontrei o problema. O que ocorre é o seguinte, ao passar o vetor para a function ela não entende que o vetor começa em 1, mas sim que começa em zero, ou seja, ele sempre vai colocar um valor aleatório na primeira posição e depois nunca testará os outros elementos com esta primeira posição.

Problema resolvido.

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.