【问题标题】:Pascal array definition error帕斯卡数组定义错误
【发布时间】:2017-04-06 17:29:08
【问题描述】:

我是一名一年级学生,我有一项任务要完成,但不明白如何避免我遇到的错误。请你帮助我好吗? 这是我的代码:

PROGRAM LAB5MAS (INPUT,OUTPUT);
CONST
      n=5;
      m=6;
VAR
A: array[1..n,1..m] of Integer;
R: array[m-1] of Integer;
i,j: Integer;
max: Integer;
BEGIN
  Randomize;
  for i:=1 to n do
    for j:=1 to m do
      a[i,j]:=random(10);
  Writeln('a=,');
  for i:=1 to n do
  BEGIN
    for j:=1 to m do
      write(a[i,j]:4);
    writeln;
  END;
  for i:=1 to n do
    for j:=1 to m-1 do
      R[i,j]:=abs(A[i,j]-A[i,j+1]);
END.

for i:=1 to n do
BEGIN
  max:=R[i,1];
  for j:=1 to m-1 do
  if R[i,j] > max then
  max:=R[i,j];
  Writeln(max);
END;
for i:=1 to n do
BEGIN
  for j:=1 to m do
  write(a[i,j]:4);
  writeln;
END.

以及我得到的错误:

Compiling C:\Users\Nadia\Desktop\qqwww\laba.pas
laba.pas(7,17) Error: Error in type definition
laba.pas(24,7) Error: Illegal qualifier
laba.pas(26,1) Fatal: There were 2 errors compiling module, stopping
Fatal: Compilation aborted

如何解决这个问题? 以及如何计算数组 A(5,6) 中最近元素之间的最大减法值并将此结果写入数组 B? 提前致谢!

【问题讨论】:

  • 上一次我用帕斯卡编程是在高中....但似乎R 被定义为 1 维数组,而您使用矩阵R[I,J](也定义为R 应该是 ARRAY [1..M-1] OF INTEGER;
  • Pascal 不采用简单的下标来定义数组;您必须提供预期有效的整个下标范围。您对R 的定义不正确。看看你是如何在上面的行中定义A 的有效下标的。此外,您正在尝试将R 用作二维数组,但尚未如此定义。返回并检查您的代码。
  • 您有两个END.END 以句号结尾)。这将是一个语法错误。你的 Pascal 程序的句法结束在第一个 END. 的末尾。
  • 另请注意,第一部分(直到第一个END.)看起来好像是一个单独的过程。这是什么帕斯卡方言?

标签: pascal freepascal


【解决方案1】:

R:整数数组[m-1];

这是错误的,您需要指定一个值范围,例如"R: 整数数组[0..m-1];"

R[i,j]:=abs(A[i,j]-A[i,j+1]);

您正试图将一维数组视为多维数组。

你似乎也搞砸了你的“END”,我认为你在这方面的语法是正确的,但几乎可以肯定不是你想要的(iirc 第一个“END”之后的所有内容都被忽略了)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多