Pascal 中的数组范围错误
Array Range error in Pascal
我正在为 class 用 Pascal 做一些家庭作业,但遇到了麻烦。我的基本上是有效的,但我们的作业提交网站并没有给予我充分的信任。我给我的教授发了邮件,他告诉我 {$r+} 指令。当我包含它时,我得到 运行-time error 201。我知道这个问题与范围检查有关,但我不知道哪些更改可以解决问题。非常感谢任何帮助,谢谢。
{$mode Delphi}
{$r+}
program InversePerm;
var
N: integer; // Size of set of numbers
i: integer; // counter
x: integer; // array-slot counter
perm: array of integer; // THE array
begin
read(N);
setlength(perm, N); // sets array size to user input
for i := 1 to N do
begin
read(x);
perm[x] := i;
end;
for i := 1 to N do
write(perm[i], ' ');
end.
我认为你的问题在线:
perm[x] := i;
我想你想写的是:
perm[i] := x;
否则,如果我在 x 中输入 100,那么您的代码会在第一次迭代时执行 perm[100] = 1。如果为 N 输入 10,则会出现范围错误。
我正在为 class 用 Pascal 做一些家庭作业,但遇到了麻烦。我的基本上是有效的,但我们的作业提交网站并没有给予我充分的信任。我给我的教授发了邮件,他告诉我 {$r+} 指令。当我包含它时,我得到 运行-time error 201。我知道这个问题与范围检查有关,但我不知道哪些更改可以解决问题。非常感谢任何帮助,谢谢。
{$mode Delphi}
{$r+}
program InversePerm;
var
N: integer; // Size of set of numbers
i: integer; // counter
x: integer; // array-slot counter
perm: array of integer; // THE array
begin
read(N);
setlength(perm, N); // sets array size to user input
for i := 1 to N do
begin
read(x);
perm[x] := i;
end;
for i := 1 to N do
write(perm[i], ' ');
end.
我认为你的问题在线:
perm[x] := i;
我想你想写的是:
perm[i] := x;
否则,如果我在 x 中输入 100,那么您的代码会在第一次迭代时执行 perm[100] = 1。如果为 N 输入 10,则会出现范围错误。