帕斯卡中的数组范围错误



我正在用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,那么这将为您提供范围错误。

最新更新