请高人指点下!!!!

qixiwz 2009-08-03 05:42:38
请帮忙看下如下代码
type
Ta = array [1..6] of Integer;

procedure CreateData_(var aaa : Ta);
var
bbb:array[1..33] of integer;
i,j,n,k,s,v,t: integer;
begin
for t:=1 to 33 do
for v:=0 to Form1.CheckListBox1.Items.Count-1 do
begin
if Form1.CheckListbox1.Checked[v] then
bbb[t]:=strtoint(Form1.CheckListbox1.Items[v]);
//end;
end;
//begin
randomize;
//先用随机数初始化数组;
for i:=1 to 6 do
begin
repeat
n:=0;
aaa[i]:=1+random(33);
for t:=1 to 33 do
begin
if aaa[i]=bbb[t]
then n:=n+1;
end;
until n=0;
end;

//下面是关键的部分,消去相同的数;
for i:=1 to 5 do
begin
for j:=i+1 to 6 do
begin
if aaa[i]=aaa[j] then
begin
repeat
n:=0; //设定的计数器,下面每发现一次重复就n+1;
aaa[j]:=1+random(33);
for s:=1 to i do
begin
if aaa[j]=aaa[s] then
n:=n+1;
end;
for t:=1 to 33 do
begin
if aaa[i]=bbb[t] then
n:=n+1;
end;
until n=0;//直到n=0即无重复才跳出repeat语句.
end;
end;
end;
for i:=1 to 6 do
for j:=i+1 to 6 do
if aaa[i]>aaa[j] then
begin
k:=aaa[i];
aaa[i]:=aaa[j];
aaa[j]:=k;
end;
end;
//end;
//下面将数组逐个输出
procedure TForm1.Button1Click(Sender: TObject);

var
aaa : Ta;
i : Integer;
begin

CreateData_(aaa);

edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
//下面将数组逐个输出
for i:=1 to 6 do
edit1.Text:=edit1.Text+' '+inttostr(aaa[i]);
CreateData_(aaa);
for i:=1 to 6 do
edit2.Text:=edit2.Text+' '+inttostr(aaa[i]);
CreateData_(aaa);
for i:=1 to 6 do
edit3.Text:=edit3.Text+' '+inttostr(aaa[i]);
CreateData_(aaa);
for i:=1 to 6 do
edit4.Text:=edit4.Text+' '+inttostr(aaa[i]);
CreateData_(aaa);
for i:=1 to 6 do
edit5.Text:=edit5.Text+' '+inttostr(aaa[i]);


end;
end.

功能为随机选择33个号码中的6个,且这6个不重复,按从大到小顺序排列,这个已经实现;但是另一个功能:筛选出CheckListbox1中选中的值,并把他们筛选出去,然后在剩下的数字里还是随机选出6个排列,实际就是双色球的随机选号程序吧,请看下红色部分,这个是我写的筛选部分,但是结果无效,还是没排除掉选中的部分,请各位高人帮帮忙吧!!!!!!
...全文
37 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧