win7开机停在欢迎界面:谁能给我指一下代码中的错误啊?(Pascal)多谢了

来源:百度文库 编辑:查人人中国名人网 时间:2024/05/09 02:02:18
把1..9每3个数一组分成3部分 ,要求:组[3]=3*组[1]且组[2]=2*组[1],比如 组=(192),(384),(576);
我是这样写的,但不能正确输出阿,那位高手可以为我指点迷津?
{$b-}

program test;
type
can=set of 1..9;
var
i,j:integer;
num:array[1..3,1..3]of 1..9;

function check:boolean;
var n:array[1..3]of integer;i:integer;
begin
for i:=1 to 3 do
n[i]:=num[i,1]*100+num[i,2]*10+num[i,3];
if (n[1]*2=n[2])and(n[1]*3=n[3]) then check:=true
else check:=false
end;

procedure out;
var i,j:integer;
begin
for i:=1 to 3 do begin
for j:=1 to 3 do write(num[i,j]);
if i<3 then write(', ');
end;
writeln;
end;

procedure try(a,at:integer;from:can);
var i:integer;
begin
if (a=3)and(at=3) then
for i:=1 to 9 do
if (i in from) then begin
num[3,3]:=i; if check then out
end else
else
for i:=1 to 9 do
if i in from then begin
num[a,at]:=i;
try(a+at div 3,5-at,from-[i])
end
end;

begin
fillchar(num,sizeof(num),0);
for num[1,1]:=1 to 3 do
for num[2,1]:=num[1,1]*2 to (num[1,1]+1)*2 do
for num[3,1]:=num[1,1]*3 to (num[1,1]+1*3) do
try(1,2,[1..9]-[num[1,1]]-[num[2,1]]-[num[3,1]]);

try(1,1,[1..9]);
end.

已改正,如下:

program test;

type
can=set of 1..9;
var
i,j,k,l,m:integer;
num:array[1..3,1..3]of 1..9;

function check:boolean;
var n:array[1..3]of integer;i:integer;
begin
for i:=1 to 3 do
n[i]:=num[i,1]*100+num[i,2]*10+num[i,3];
if (n[1]*2=n[2])and(n[1]*3=n[3]) then check:=true
else check:=false
end;

procedure out;
var i,j:integer;
begin
for i:=1 to 3 do begin
for j:=1 to 3 do write(num[i,j]);
if i<3 then write(', ');
end;
writeln;
end;

procedure try_it(a,at:integer;from:can);
var i:integer;
begin
if (a=3)and(at=3) then
for i:=1 to 9 do
if (i in from) then
begin
num[3,3]:=i;
if check
then
out
end
else
else
for i:=1 to 9 do
if i in from then
begin
num[a,at]:=i;
try_it(a+at div 3,5-at,from-[i])
end
end;

begin
fillchar(num,sizeof(num),0);
for k:=1 to 3 do
begin
num[1,1] := k;
for l:=num[1,1]*2 to (num[1,1]+1)*2 do
if (l <= 9) then
begin
num[2,1] := l;
for m:=num[1,1]*3 to (num[1,1]+1)*3 do
if (m <= 9) then
begin
num[3,1] := m;
try_it(1,2,[1..9]-[num[1,1]]-[num[2,1]]-[num[3,1]]);
end;
end;
end;
end.