Gerador de Números Em Delphi
25/06/2021
0
Pois bem o que estou querendo implementar nesse código é o seguinte: Eu colocar um TEdit (que receba apenas numero 1 .....), ai quando clica no botão ele gere a quantidade de sorteios que a pessoa digitou no Edit. Pois da forma que esta tem que fica clicando no botão para gerar os sorteios. Conto com a ajuda de vocês para fazer essa implementação no código. Desde já grato pela ajuda.
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var s : array[0..5] of Integer; i, a, b, z : Integer; begin b := 7; Randomize; while b > 6 do begin b:= 0; for I := 0 to 5 do s[i] := Random(61); for I := 0 to 5 do begin a := s[i]; if a = 0 then b := b + 1; for z := 0 to 5 do if a = s[z] then if a = s[z] then b := b + 1; end; end; for z := 0 to 4 do begin for I := 0 to 4 do if s[i] > s[i+1] then begin a := s[i+1]; s[i+1] := s[i]; s[i] := a; end; end; Memo1.Lines.Add( IntToStr(s[0]) + ' - ' + IntToStr(s[1]) + ' - ' + IntToStr(s[2]) + ' - ' + IntToStr(s[3]) + ' - ' + IntToStr(s[4]) + ' - ' + IntToStr(s[5])); end; end.
Rubens Pena
Post mais votado
25/06/2021
Exemplo:
procedure TForm1.Button1Click(Sender: TObject); var s: array [0 .. 5] of Integer; i, a, b, z, j: Integer; begin Memo1.Clear; for j := 0 to StrToIntDef(Edit1.Text, 0) - 1 do begin b := 7; Randomize; while b > 6 do begin b := 0; for i := 0 to 5 do s[i] := Random(61); for i := 0 to 5 do begin a := s[i]; if a = 0 then b := b + 1; for z := 0 to 5 do if a = s[z] then if a = s[z] then b := b + 1; end; end; for z := 0 to 4 do begin for i := 0 to 4 do if s[i] > s[i + 1] then begin a := s[i + 1]; s[i + 1] := s[i]; s[i] := a; end; end; Memo1.Lines.Add(IntToStr(s[0]) + ' - ' + IntToStr(s[1]) + ' - ' + IntToStr(s[2]) + ' - ' + IntToStr(s[3]) + ' - ' + IntToStr(s[4]) + ' - ' + IntToStr(s[5])); end; end;
Natanael Ferreira
Mais Posts
25/06/2021
Emerson Nascimento
procedure TForm5.Button1Click(Sender: TObject); var Aposta: array of integer; // neste momento não sei quantos números serão sorteados NumeroDeApostas, NumerosPorAposta: integer; Sorteios, Sorteado: integer; AddMemo, NumerosSorteados: integer; strAposta: string; function ExisteNumero(Numero: integer): boolean; var iBusca: integer; begin Result := False; for iBusca := Low(Aposta) to High(Aposta) do if Aposta[iBusca] = Numero then begin Result := True; exit; end; end; begin Randomize; MemoApostas.Clear; // limpa o memo NumeroDeApostas := SpinEdit1.Value; // quantidade de apostas a serem geradas NumerosPorAposta := SpinEdit2.Value; // quantidade de números por aposta SetLength(Aposta, NumerosPorAposta); for Sorteios := 1 to NumeroDeApostas do begin NumerosSorteados := 0; while NumerosSorteados < NumerosPorAposta do begin Sorteado := Random(60)+1; // sorteia de 1 a 60 if not ExisteNumero(Sorteado) then begin Aposta[NumerosSorteados] := Sorteado; Inc(NumerosSorteados); end; end; strAposta := ''; for AddMemo := Low(Aposta) to High(Aposta) do begin if strAposta <> EmptyStr then strAposta := strAposta + ', '; strAposta := strAposta + IntToStr(Aposta[AddMemo]); Aposta[AddMemo] := 0; // limpa o conteúdo da aposta end; MemoApostas.Lines.Add( strAposta ); end; end;
26/06/2021
Rubens Pena
Agora o código que Emerson Nascimento passou é como se ele tivesse interpretado 100% a minha linha de pensamento, ficou show, reduziu bastante as linhas que estava no código inicial, sem falar esse componente do SpinEdit (muito bom ele), esse código servira para as demais modalidades.
Muito obrigado a ambos.
27/06/2021
Rubens Pena
procedure TForm5.Button1Click(Sender: TObject); var Aposta: array of integer; // neste momento não sei quantos números serão sorteados NumeroDeApostas, NumerosPorAposta: integer; Sorteios, Sorteado: integer; AddMemo, NumerosSorteados: integer; strAposta: string; function ExisteNumero(Numero: integer): boolean; var iBusca: integer; begin Result := False; for iBusca := Low(Aposta) to High(Aposta) do if Aposta[iBusca] = Numero then begin Result := True; exit; end; end; begin Randomize; MemoApostas.Clear; // limpa o memo NumeroDeApostas := SpinEdit1.Value; // quantidade de apostas a serem geradas NumerosPorAposta := SpinEdit2.Value; // quantidade de números por aposta SetLength(Aposta, NumerosPorAposta); for Sorteios := 1 to NumeroDeApostas do begin NumerosSorteados := 0; while NumerosSorteados < NumerosPorAposta do begin Sorteado := Random(60)+1; // sorteia de 1 a 60 if not ExisteNumero(Sorteado) then begin Aposta[NumerosSorteados] := Sorteado; Inc(NumerosSorteados); end; end; strAposta := ''; for AddMemo := Low(Aposta) to High(Aposta) do begin if strAposta <> EmptyStr then strAposta := strAposta + ', '; strAposta := strAposta + IntToStr(Aposta[AddMemo]); Aposta[AddMemo] := 0; // limpa o conteúdo da aposta end; MemoApostas.Lines.Add( strAposta ); end; end;
Boa tarde mestre. Com relação aos números saírem na ordem crescente, poderia fazer essa pequena alteração ai no seu código para mim?
E aproveitando o momento acrescentar uma numeração das linhas.
Exemplo:
01: 5-10-11-23-28-35
02: 11-22-24-25-58-60
03: 7-14-21-28-35-42
.
.
.
.
Obrigado pela atenção...
28/06/2021
Emerson Nascimento
procedure TForm5.Button1Click(Sender: TObject); var Aposta: TStringList; NumeroDeApostas, NumerosPorAposta: integer; Sorteios, AddMemo: integer; strSorteado, strAposta: string; begin Randomize; // o correto é colocar no OnCreate do form, porque precisa ser chamado apenas 1 vez MemoApostas.Clear; // limpa o memo NumeroDeApostas := SpinEdit1.Value; // quantidade de apostas a serem geradas NumerosPorAposta := SpinEdit2.Value; // quantidade de números por aposta Aposta := TStringList.Create; // cria a aposta for Sorteios := 1 to NumeroDeApostas do begin Aposta.Clear; // limpa a aposta while Aposta.Count < NumerosPorAposta do begin strSorteado := FormatFloat('00', Random(60)+1); // sorteia de 1 a 60 if Aposta.IndexOf(strSorteado) < 0 then Aposta.Add(strSorteado); end; Aposta.Sort; // ordena os números da aposta strAposta := ''; for AddMemo := 0 to Aposta.Count-1 do begin if strAposta <> EmptyStr then strAposta := strAposta + ', '; strAposta := strAposta + Aposta[AddMemo]; end; MemoApostas.Lines.Add( strAposta ); end; end;
28/06/2021
Rubens Pena
procedure TForm5.Button1Click(Sender: TObject); var Aposta: TStringList; NumeroDeApostas, NumerosPorAposta: integer; Sorteios, AddMemo: integer; strSorteado, strAposta: string; begin Randomize; // o correto é colocar no OnCreate do form, porque precisa ser chamado apenas 1 vez MemoApostas.Clear; // limpa o memo NumeroDeApostas := SpinEdit1.Value; // quantidade de apostas a serem geradas NumerosPorAposta := SpinEdit2.Value; // quantidade de números por aposta Aposta := TStringList.Create; // cria a aposta for Sorteios := 1 to NumeroDeApostas do begin Aposta.Clear; // limpa a aposta while Aposta.Count < NumerosPorAposta do begin strSorteado := FormatFloat('00', Random(60)+1); // sorteia de 1 a 60 if Aposta.IndexOf(strSorteado) < 0 then Aposta.Add(strSorteado); end; Aposta.Sort; // ordena os números da aposta strAposta := ''; for AddMemo := 0 to Aposta.Count-1 do begin if strAposta <> EmptyStr then strAposta := strAposta + ', '; strAposta := strAposta + Aposta[AddMemo]; end; MemoApostas.Lines.Add( strAposta ); end; end;
Show de Bola, Obrigado mestre. Mais uma vez Obrigado Pela Ajuda.
26/09/2021
Rubens Pena
procedure TForm5.Button1Click(Sender: TObject); var Aposta: TStringList; NumeroDeApostas, NumerosPorAposta: integer; Sorteios, AddMemo: integer; strSorteado, strAposta: string; begin Randomize; // o correto é colocar no OnCreate do form, porque precisa ser chamado apenas 1 vez MemoApostas.Clear; // limpa o memo NumeroDeApostas := SpinEdit1.Value; // quantidade de apostas a serem geradas NumerosPorAposta := SpinEdit2.Value; // quantidade de números por aposta Aposta := TStringList.Create; // cria a aposta for Sorteios := 1 to NumeroDeApostas do begin Aposta.Clear; // limpa a aposta while Aposta.Count < NumerosPorAposta do begin strSorteado := FormatFloat('00', Random(60)+1); // sorteia de 1 a 60 if Aposta.IndexOf(strSorteado) < 0 then Aposta.Add(strSorteado); end; Aposta.Sort; // ordena os números da aposta strAposta := ''; for AddMemo := 0 to Aposta.Count-1 do begin if strAposta <> EmptyStr then strAposta := strAposta + ', '; strAposta := strAposta + Aposta[AddMemo]; end; MemoApostas.Lines.Add( strAposta ); end; end;
Bom dia. Teria como fazer o sorteio com base nos números selecionados? Estou enviando o font do projeto pra que possa ser analisado um jeito de sortear em com base nas dezenas selecionada.
Link do font: ( https://mega.nz/file/DIpnHI4Q#q9fIvyq60Y-CVikUNcjmNa7VGOtKoYMtQkxFZ6wG1Mk )
Com relação ao código se não der pra postar aqui envia no meu email : rubens.pena7@gmail.com, vai me ajudar bastante. desde já grato pela atenção.
Clique aqui para fazer login e interagir na Comunidade :)