Ir para conteúdo
Fórum Script Brasil
  • 0

Nº aleatorios e não repetidos


fernando_vip

Pergunta

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

  • 0

Opa pessoal

um 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;)

Link para o comentário
Compartilhar em outros sites

  • 0

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

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...