rdm 0 Denunciar post Postado Setembro 20, 2009 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
Chrnos 30 Denunciar post Postado Setembro 21, 2009 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
rdm 0 Denunciar post Postado Setembro 25, 2009 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