Fórum Gerador de Números Em Delphi #616085
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
Curtir tópico
+ 0Post 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
Gostei + 1
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;
Gostei + 1
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.
Gostei + 0
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...
Gostei + 0
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;Gostei + 1
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.
Gostei + 0
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.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)