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,则会出现范围错误。