一个算法的实现(156分)

  • 主题发起人 主题发起人 stock600
  • 开始时间 开始时间
S

stock600

Unregistered / Unconfirmed
GUEST, unregistred user!
一个算法的实现
乐透型彩票模拟对奖:
用户输入一注号码(或者随机产生一注号码),用程序实现和以前各期的中奖
号码对奖,把中奖结果显示出来.
例如 前N期的中奖号码分别为:
001期 01 05 06 08 09
002期 05 06 07 12 20
003期 09 12 13 19 20
...........
投注的一注号码为:05 06 09 10 12
只要投注的号码中有3个以上(包括3个)与中奖号码相同即可中奖,
把中奖结果显示出来.
请大侠写点源码参考
 
var i,j,k,times,: Integer;
const qs: array[1..3] of string=('0105060809','0506071220','0912131920');
begin
times := 0;

for i=1{第一期} to 3{第3期}do

for j:=0 to 4do

for k:=1 to 5do

if edit[k].text := copy(qs,j+k,2) then
begin
if times+1>3 then
//////-我中大奖了
times := times +1;
end;

end;
 
用二维数组,再嵌套循环,应该不难,就是麻烦点。
 
简单写了一个。你看对不对,我没调试
const
n:=5;//中奖期数
var
ss :array[1..n,1..5] of integer;
dd:array[1..5] of integer;
i,j,k,s:integer
begin

for j:=1 to ndo
for k:=1 to 5do
for i:=1 to 5do
begin
if ss[j,k]=dd then
begin
inc(s);
if s>=3 then
begin
dd数组即为中奖号码;
ss:=0;
exit;
end;
end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
qq :array[1..3] of string[10];
dd:array[1..5] of string[2];
i,j,k,s:integer;
begin
dd[1]:='05';
dd[2]:='06';
dd[3]:='09';
dd[4]:='10';
dd[5]:='12';
qq[1]:='0105060809';
qq[2]:='0506071220';
qq[3]:='0912131920';
for j:=1 to 3do
begin
s:=0;
for i:=1 to 5do
begin
if (pos(dd,qq[j]) mod 2)=1 then
begin
inc(s);
if s>=3 then
begin
showmessage(IntToStr(j)+'期为中奖号码');
break;
end;
end;
end;
end;
end;
 
把以前的中奖号码存在数据库中
查一下就得了
 
找其它办法解决了,也谢谢大家
 
后退
顶部