哪错呢

zcgmai47 2008-09-16 07:38:54
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
a=array[1..10,1..10] of Integer;

var
i,j:Integer;
x:a;


begin

for i := low(a) to high(a) do
begin
a[i,1]:=1;
a[i,i]:=1;
end;
for i := 1 to 10 do
for j := 1 to 10 do
begin
a[i,j]:=a[i-1,j-1]+a[i-1,j];
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
write(a[i,j],' ');
writeln;
end;

readln;
end.
...全文
101 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
DumDum 2008-09-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xmfan2000 的回复:]
a[i,j]:=a[i-1,j-1]+a[i-1,j];
你定义的数组是从1开始的,当i=1时越界了。
[/Quote]
jacknes009 2008-09-18
  • 打赏
  • 举报
回复
for i := low(x) to high(x) do
begin
x[i,1]:=1;
x[i,i]:=1;
end;

for i := 2 to 10 do
for j := 2 to 10 do
begin
x[i,j]:=x[i-1,j-1]+x[i-1,j];
end;


for i := 1 to 10 do
begin
for j := 1 to 10 do
write(x[i,j],' ');
writeln;
end;

readln;
gwhdaxia 2008-09-18
  • 打赏
  • 举报
回复
for i := low(x) to high(x) do
begin
x[i,1]:=1;
x[i,i]:=1;
end;

for i := 2 to 10 do
for j := 2 to 10 do
begin
x[i,j]:=x[i-1,j-1]+x[i-1,j];
end;


for i := 1 to 10 do
begin
for j := 1 to 10 do
write(x[i,j],' ');
writeln;
end;

readln;
火龙岛主 2008-09-18
  • 打赏
  • 举报
回复
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
a = array[1..10, 1..10] of Integer;

var
i, j: Integer;
x: a;


begin
for i := low(x) to high(x) do
begin
x[i, 1] := 1;
x[i, i] := 1;
end;
for i := 1 to 10 do
for j := 1 to 10 do
begin
x[i, j] := x[i - 1, j - 1] + x[i - 1, j];
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
write(x[i, j], ' ');
writeln;
end;
readln;
end.

首先是a是你定义的类型,所以不能用来变量使用。
就好比你integer不能用作变量是相同的道理,
因此,你把a换成x就可以编译通过了。
kampan 2008-09-18
  • 打赏
  • 举报
回复
越界了,没有a[0] 当i=1时则出现a[0]
喝口水 2008-09-18
  • 打赏
  • 举报
回复
a[i,j]:=a[i-1,j-1]+a[i-1,j];
gwhdaxia 2008-09-18
  • 打赏
  • 举报
回复
没看懂你要的是什么结果
easy088 2008-09-18
  • 打赏
  • 举报
回复
结贴,给分。
easy088 2008-09-18
  • 打赏
  • 举报
回复
终于在,不懈努力下,完成了杨辉三角

复制出来

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
a=array[1..10,1..10] of Integer;

var
i,j:Integer;
x:a;


begin

for i := low(x) to high(x) do
begin
x[i,1]:=1;
x[i,i]:=1;
end;
for i := 1 to 10 do
for j := 1 to 10 do
begin
x[i+1,j+1]:=x[i,j]+x[i,j+1];
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
begin
if x[i,j]=0 then continue;
write(x[i,j],' ');
end;
writeln;
end;

readln;
end.
zcgmai47 2008-09-18
  • 打赏
  • 举报
回复
输出结果,两边既然不是全1
zcgmai47 2008-09-18
  • 打赏
  • 举报
回复
zcgmai47 2008-09-18
  • 打赏
  • 举报
回复
首先是,变量搞错了,代码整理一下,把a换成x

program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
a=array[1..10,1..10] of Integer;

var
i,j:Integer;
x:a;


begin

for i := low(x) to high(x) do
begin
x[i,1]:=1;
x[i,i]:=1;
end;
for i := 1 to 10 do
for j := 1 to 10 do
begin
x[i,j]:=x[i-1,j-1]+x[i-1,j];
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
write(x[i,j],' ');
writeln;
end;

readln;
end.



然后,通过编译,运行,弹出为
http://p12.freep.cn/p.aspx?u=v20_p12_p_0809181345236400_0.jpg
原来是数组下标越界

最后,再次修改了一下,代码为
program Project1;

{$APPTYPE CONSOLE}

uses
SysUtils;

type
a=array[0..10,0..10] of Integer;

var
i,j:Integer;
x:a;


begin

for i := low(x) to high(x) do
begin
x[i,1]:=1;
x[i,i]:=1;
end;
for i := 1 to 10 do
for j := 1 to 10 do
begin
x[i,j]:=x[i-1,j-1]+x[i-1,j];
end;
for i := 1 to 10 do
begin
for j := 1 to 10 do
write(x[i,j],' ');
writeln;
end;

readln;
end.


结果运行出来还是没有得到正确的结果,图
http://p12.freep.cn/p.aspx?u=v20_p12_p_0809181359051089_0.jpg
xmfan2000 2008-09-17
  • 打赏
  • 举报
回复
a[i,j]:=a[i-1,j-1]+a[i-1,j];
你定义的数组是从1开始的,当i=1时越界了。
zcgmai47 2008-09-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fenger8293 的回复:]
是编译不过去还是结果不对。
for i := low(a) to high(a) do
begin
a[i,1]:=1;
a[i,i]:=1;
end;
你这个好象不大对吧.
[/Quote]

把a改成x后
Messages显示错误
见图
http://p12.freep.cn/p.aspx?u=v20_p12_p_0809172319512652_0.jpg
手指风 2008-09-16
  • 打赏
  • 举报
回复
是编译不过去还是结果不对。
for i := low(a) to high(a) do
begin
a[i,1]:=1;
a[i,i]:=1;
end;
你这个好象不大对吧.

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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