fernando_vip Postado Novembro 9, 2008 Denunciar Share Postado Novembro 9, 2008 boa noiteBoa,Estou com exercício que deve gerar 15 Nº aleatórios entre 01 e 100 emostrar o resultado num memo ou listbox, eu fiz usando um randomize eum laço for..to..do e o cod da minha unit é este:procedure TForm1.BitBtn1Click(Sender: TObject);Varsena : Integer;numero : array[1..15] of integer;BeginListBox1.Items.Clear;Randomize;for sena := 1 to 15 doNumero[sena] := Random(100);ListBox1.Items.Add(inttostr(numero[sena]));contudo ele só gera 7 numeros repetidos e na mesma linha o q posso faer para resolver isso?unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;type TForm1 = class(TForm) BitBtn1: TBitBtn; ListBox1: TListBox; procedure BitBtn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form1: TForm1;implementation{$R *.dfm}procedure TForm1.BitBtn1Click(Sender: TObject);Varsena : Integer;numero : array[1..15] of integer;BeginListBox1.Items.Clear;Randomize;for sena := 1 to 15 doNumero[sena] := Random(100);ListBox1.Items.Add(inttostr(numero[sena]));end;end. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fernando_vip Postado Novembro 9, 2008 Autor Denunciar Share Postado Novembro 9, 2008 Opa pessoalum amigo me ajudou neste problema o cod da unit ficou assim:procedure TForm1.BitBtn1Click(Sender: TObject); var sena: integer; Lista: TList; begin Randomize; ListBox1.Items.Clear; Lista := TList.Create; try while Lista.Count < 15 do begin repeat sena := Random(100) until Lista.IndexOf(Pointer(sena)) = -1; Lista.Add(Pointer(sena)); ListBox1.Items.Add(IntToStr(sena)); end; finally Lista.Free; end;end;valeu pessoal;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Novembro 10, 2008 Denunciar Share Postado Novembro 10, 2008 fernando_vip, já que é um exercício para aprendizado, deixo outras opções com otimização do recurso.Como você irá colocar o número em um ListBox, você pode utilizar do próprio ListBox para a verificação - não há necessidade da lista auxiliar (TList). Veja:procedure TForm1.BitBtn1Click(Sender: TObject); var sena: integer; begin Randomize; ListBox1.Items.Clear; while ListBox1.Items.Count < 15 do begin repeat sena := Random(100); until ListBox1.Items.IndexOf(IntToStr(sena)) = -1; ListBox1.Items.Add(IntToStr(sena)); end; end; ou usando a propriedade Objects de forma similar a sua implementação: procedure TForm1.BitBtn1Click(Sender: TObject); var sena: integer; begin Randomize; ListBox1.Items.Clear; while ListBox1.Items.Count < 15 do begin repeat sena := Random(100); until ListBox1.Items.IndexOfObject(Pointer(sena)) = -1; ListBox1.Items.AddObject(IntToStr(sena), Pointer(sena)); end; end;Abraços Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
fernando_vip
boa noite
Boa,
Estou com exercício que deve gerar 15 Nº aleatórios entre 01 e 100 e
mostrar o resultado num memo ou listbox, eu fiz usando um randomize e
um laço for..to..do e o cod da minha unit é este:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
sena : Integer;
numero : array[1..15] of integer;
Begin
ListBox1.Items.Clear;
Randomize;
for sena := 1 to 15 do
Numero[sena] := Random(100);
ListBox1.Items.Add(inttostr(numero[sena]));
contudo ele só gera 7 numeros repetidos e na mesma linha o q posso faer para resolver isso?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
ListBox1: TListBox;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
sena : Integer;
numero : array[1..15] of integer;
Begin
ListBox1.Items.Clear;
Randomize;
for sena := 1 to 15 do
Numero[sena] := Random(100);
ListBox1.Items.Add(inttostr(numero[sena]));
end;
end.
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.