2017-10-11 82 views
0

下面的代码应该创建一个3x4矩阵并打印每行所有数字的总和。然而,在编译它,我不断收到以下错误:有问题Pascal错误:非法限定符

jdoodle.pas(26,25) Error: Illegal qualifier 
jdoodle.pas(33,32) Error: Illegal qualifier 
jdoodle.pas(41,32) Error: Illegal qualifier 
jdoodle.pas(48,24) Error: Illegal qualifier 
jdoodle.pas(56,4) Fatal: There were 4 errors compiling module, stopping 
Fatal: Compilation aborted. 

的线路有:

line 26:   readln (A[i, j]); 
line 33:   B[i] := B[i] + A[i, j] 
line 41:   C[J] := C [J] + A[i,j] 
line 48:   write (A[i, j]:5); 

任何人都可以澄清这对我好吗?主要的问题是,我不知道错误代码的含义。我注意到'A [i,j]'在错误中提到的所有行中,但我无法找出它出了什么问题。任何帮助都将不胜感激!

这里是我的完整代码:

Program Matrix (input, output); 

    const 
    ZEILENMAX = 3; 
    SPALTENMAX = 4; 
    type 
    tZeile = 1..ZEILENMAX; 
    tSpalte = 1..SPALTENMAX; 
    tMatrix = array[tZeile] of integer; 
    tZeilensumme = array [tZeile] of integer; 
    tSpaltensumme = array [tSpalte] of integer; 

    var 
    A : tMatrix; 
    B : tZeilensumme; 
    C : tSpaltensumme; 
    i : tZeile; 
    j : tSpalte; 

begin 


    for i := 1 to ZEILENMAX do 
     for j := 1 to SPALTENMAX do 
      readln (A[i, j]); 


    for i := 1 to ZEILENMAX do 
    begin 
     B[i] := 0; 
     for j := 1 to SPALTENMAX do 
      B[i] := B[i] + A[i, j] 
    end; 


    for j := 1 to SPALTENMAX do 
    begin 
     C[j] := 0; 
     for i := 1 to Zeilenmax do 
      C[J] := C [J] + A[i,j] 
    end; 

    writeln; 
    for i := 1 to ZEILENMAX do 
    begin 
     for j := 1 to SPALTENMAX do 
      write (A[i, j]:5); 
     writeln (B[i]:10) 
    end; 

    writeln; 
    for j:= 1 to SPALTENMAX do 
     write (C[j]:5); 
    writeln 
end. 
+2

在您的声明中,'A'看起来不像多维数组。 – pvg

+0

@pvg你能澄清吗?矩阵不算作多维数组吗? (对不起,这里是初学者) – Lucky

+0

'矩阵'只是你给出类型的名字。你已经将它声明为一维数组,就像其他数组一样。你为什么期望A是多维的,而B和C是一维的,具有完全相同的声明?如果你对声明语法不清楚,可以Google'在Pascal中创建多维数组'。 – pvg

回答

0

让我们成绩单下面的一段代码:

const 
    ZEILENMAX = 3; 
type 
    tZeile = 1..ZEILENMAX; 
    tMatrix = array[tZeile] of integer; 
var 
    A : tMatrix; 

它等于:

type 
    tZeile = 1..3; 
    tMatrix = array[tZeile] of integer; 
var 
    A : tMatrix; 

,这是类似到:

阵列 A的个

成员可以通过访问的单个指数: A[1] := 0;但不A[1,1] := 1或类似物。

+1

@lurker和平片:-)更正。请,请随时纠正我的任何帖子)) –