設計一模擬樂透彩開獎號碼程式 |
尚未結案
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
|
tonytop
中階會員 ![]() ![]() ![]() 發表:6 回覆:114 積分:89 註冊:2003-12-04 發送簡訊給我 |
|
jimmy_wei
高階會員 ![]() ![]() ![]() ![]() 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
給你一點點code其它的你自己來吧....
procedure TForm1.Button1Click(Sender: TObject); var i,j: Integer; begin Randomize; for i:=0 to 6 do begin j:= Random(49); Memo1.Lines.Add(IntToSTr(j)); end; end;1.裡面已經有隨機抓的方法了 2.也有抓幾次的方法(把6改成變數就好) 3.如果你要判斷是否有重覆,就在random出來的變數j多跑一個迴圈判斷就好 ,如果j和之前跑出來放在memo1中的值重覆再跑一次random就ok啦.... 程式難度不高,所以你可以自己玩,給你一小段code方便你著手囉.... 不過其實也差不多了耶...^^ 發表人 - jimmy_wei 於 2004/12/01 19:17:02 |
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
|
stellos
中階會員 ![]() ![]() ![]() 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
我寫了個範例讓你參考,祝順心!! void __fastcall TForm1::Button1Click(TObject *Sender)
{
int tab[50]; //存隨機選號
int ball,num,i,j,k; for(i=0;i<50;i ) tab[i]=0;
ball=Edit1->Text.ToInt(); //Edit內輸入你的n
if(ball>49 ||ball<=1) return; // i=1;
while(i<=ball)
{
num=random(49) 1;
for(j=0;j=i) //沒重複
{
tab[j-1]=num; i ;
}
}
tab[ball]=random(49) 1; //特別號允許與一般號重複 //顯示出來
AnsiString str="";
for(i=0;i
|
jimmy_wei
高階會員 ![]() ![]() ![]() ![]() 發表:9 回覆:176 積分:147 註冊:2003-08-28 發送簡訊給我 |
|
stellos
中階會員 ![]() ![]() ![]() 發表:24 回覆:84 積分:51 註冊:2004-06-08 發送簡訊給我 |
抱歉!!
其實我有試過
只是貼上來的時候迴圈語法
不知道怎會不一樣,我測過再貼一次 void __fastcall TForm1::Button1Click(TObject *Sender)
{
int tab[50]; //存隨機選號
int ball,num,i,j,k; for(i=0;i<50;i ) tab[i]=0;
ball=Edit1->Text.ToInt(); //Edit內輸入你的n
if(ball>49 ||ball<=1) return; // i=1;
while(i<=ball)
{
num=random(49) 1;
for( j=0;j< i; j )
{
if(num==tab[j]) break;
}
if(j>=i) //沒重複
{
tab[j-1]=num; i ;
}
}
tab[ball]=random(49) 1; //特別號允許與一般號重複 //顯示出來
AnsiString str="";
for( i=0; i< ball; i )
{
j=tab[i];
if(j<10) str ="0";
str =IntToStr(j);
str =" ";
}
Label1->Caption=str; //用Label輸出 }
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
|
hahalin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
peterpcc
一般會員 ![]() ![]() 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
參照stellos大大提供的,改成delphi
先在form上取個botton & memo元件,然後 procedure TForm1.Button1Click(Sender: TObject);
var
tab:array[0..49] of integer;
i,j,num,ball:integer;
v_found:boolean;
begin
Memo1.Lines.Clear;
ball:=strtoint(Edit1.text); //Edit內輸入你的n
// if(ball>49 ||ball<=1) return; // 在Edit1內設定,或用其他專輸數字的Edit
i:=0;
while i
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
implementation
var n:Integer;
{$R *.dfm}
procedure angain();
begin
Form1.Edit1.Text:='';
Form1.Memo1.Lines.Clear;
Form1.Memo2.Lines.Clear;
end; procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end; procedure TForm1.FormCreate(Sender: TObject);
begin
angain;
Label1.Width:=210;
Label1.Height:=35;
Label2.Width:=90;
Label2.Height:=35;
Label3.Width:=90;
Label3.Height:=35;
end; procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
a,b,i,j,k: Integer;
begin
n:=StrToInt(Edit1.Text);
k:=n-1; for a:=1 to k do
begin
Randomize;
i:= Random(49);
Memo1.Lines.Add(IntToStr(i));
end; for b:=1 to 1 do
begin
Randomize;
j:= Random(49);
Memo2.Lines.Add(IntToStr(j));
end;
end; **請問一下,我這樣寫是錯在哪啊?英文看不到懂說~麻煩大家了!
|
peterpcc
一般會員 ![]() ![]() 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
hahalin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var a,b,i,j,k: Integer; begin n:=StrToInt(Edit1.Text); k:=n-1; for a:=1 to k do begin Randomize; i:= Random(49); Memo1.Lines.Add(IntToStr(i)); end; for b:=1 to 1 do begin Randomize; j:= Random(49); Memo2.Lines.Add(IntToStr(j)); end; end;我這樣寫有兩個漏洞,不知如何修改,可以請大家幫幫我嗎? 1.i的值會重覆出現 2.i及j的值是從0~49去亂數取樣的,但我要從1~49,該怎樣去修改呢? 另外 for b:=1 to 1 do begin Randomize; j:= Random(49); Memo2.Lines.Add(IntToStr(j)); end;特別號我這樣寫會不會很怪啊!?該怎樣去修改呢? |
peterpcc
一般會員 ![]() ![]() 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var tab:array[0..49] of integer; i,j,num,ball:integer; v_found:boolean; begin Memo1.Lines.Clear; ball:=strtoint(Edit1.text); //Edit內輸入你的n // if(ball>49 ||ball<=1) return; // 在Edit1內設定,或用其他專輸數字的Edit i:=0; while i begin v_found:=False; randomize; num:=random(49) 1; for j:=0 to i do if num=tab[j] then v_found:=True; if not v_found then //沒重複 begin tab[i]:=num; Memo1.Lines.Add(IntToSTr(num)); inc(i); end; end; randomize; Memo1.Lines.Add(IntToSTr(random(49) 1)); //特別號允許與一般號重複 end;為何不試試我轉翻譯stellos的程式呢? 試試後你再去學裡頭的用法. 只要補上一個edit,botton,memo,把這段貼在botton的按下觸發事件上,就能看到資料了 |
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject); var tab:array[1..49] of integer; i,j,num,ball:integer; v_found:boolean; begin Memo1.Lines.Clear; ball:=strtoint(Edit1.text); //Edit內輸入你的n // if(ball>49 ||ball<=1) return; // 在Edit1內設定,或用其他專輸數字的Edit i:=1; while i begin v_found:=False; randomize; num:=random(49) 1; for j:=0 to i do if num=tab[j] then v_found:=True; if not v_found then //沒重複 begin tab[i]:=num; Memo1.Lines.Add(IntToSTr(num)); inc(i); end; end;出現以下的錯誤訊息耶! Missing operator or semicolon 指向紅色那行字! |
peterpcc
一般會員 ![]() ![]() 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
peterpcc
一般會員 ![]() ![]() 發表:6 回覆:37 積分:13 註冊:2004-09-27 發送簡訊給我 |
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
|
misia_shair
一般會員 ![]() ![]() 發表:2 回覆:12 積分:2 註冊:2004-12-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |