我正在用Pascal为课堂做一些家庭作业,我遇到了一个障碍。我基本上是作品,但是我们的家庭作业提交网站并没有给我充分的荣誉。我给我的教授发了电子邮件,他告诉我{$r+}指令。当我包括它时,我得到运行时错误 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;
否则,如果我输入 100 到 x,那么您的代码在第一次迭代时会 perm[100] = 1。如果为 N 输入 10,那么这将为您提供范围错误。