主题:pascal回旋填数
输入n,输出一个二维数组
输出如下形式的数组:如 n=5 时
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
请问我的程序为何出现错误26,应该改为什么?
program ss;
var a:array[1..10,1..10] of integer;
i,j,k,l,z:integer;
procedure sz(n,m:integer);(编号的过程)
begin
z:=z+1;
if (z mod 4=1) or (z mod 4=2) then (判断是递增还是递减)
while a[n+1]<>0 (运行到这时提示错误26)do(如果下一个值为0就给下一个编上号)
begin
k:=k+1;
n:=n+1;
a[n,m]:=k;(k为计数器,用来编号)
end;
if (z mod 4=3) or (z mod 4=0) then
while
begin
k:=k+1;
n:=n-1;
a[n,m]:=k;
end;
if k=l then print;
l:=k;
if z mod 2=1 then sz(n,m);(判断是行增加还是列增加)
if z mod 2=0 then sz(m,n);
end;
procedure print; (打印的过程)
var q,w:integer;
begin
for q:=1 to s do
begin
for w:=1 to s do
write(a[q,w]:3);
writeln;
end;
end;
begin
read(s);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=0;
i:=1; j:=1;
sz(i,j);
end;
输出如下形式的数组:如 n=5 时
1 2 3 4 5
16 17 18 19 6
15 24 25 20 7
14 23 22 21 8
13 12 11 10 9
请问我的程序为何出现错误26,应该改为什么?
program ss;
var a:array[1..10,1..10] of integer;
i,j,k,l,z:integer;
procedure sz(n,m:integer);(编号的过程)
begin
z:=z+1;
if (z mod 4=1) or (z mod 4=2) then (判断是递增还是递减)
while a[n+1]<>0 (运行到这时提示错误26)do(如果下一个值为0就给下一个编上号)
begin
k:=k+1;
n:=n+1;
a[n,m]:=k;(k为计数器,用来编号)
end;
if (z mod 4=3) or (z mod 4=0) then
while
begin
k:=k+1;
n:=n-1;
a[n,m]:=k;
end;
if k=l then print;
l:=k;
if z mod 2=1 then sz(n,m);(判断是行增加还是列增加)
if z mod 2=0 then sz(m,n);
end;
procedure print; (打印的过程)
var q,w:integer;
begin
for q:=1 to s do
begin
for w:=1 to s do
write(a[q,w]:3);
writeln;
end;
end;
begin
read(s);
for i:=1 to n do
for j:=1 to n do
a[i,j]:=0;
i:=1; j:=1;
sz(i,j);
end;