2017-10-11 24 views
0

Der folgende Code soll eine 3x4-Matrix erstellen und die Summe aller Zahlen pro Zeile ausgeben. Allerdings ist es bei der Zusammenstellung, ich erhalte immer folgende Fehler:Pascal-Fehler: ungültiger Qualifier

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. 

Die Linien in Frage sind:

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); 

Könnte jemand klären für mich bitte? Das Hauptproblem ist, dass ich nicht wirklich weiß, was dieser Fehlercode bedeutet. Ich habe bemerkt, dass "A [i, j]" in allen Zeilen steht, die in den Fehlern erwähnt werden, aber ich kann einfach nicht herausfinden, was damit nicht stimmt. Jede Hilfe würde sehr geschätzt werden!

Und hier ist meine komplette Code:

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' sieht in Ihrer Deklaration nicht wie ein mehrdimensionales Array aus. – pvg

+0

@pvg könnten Sie klären? Zählt eine Matrix nicht als mehrdimensionales Array? (Sorry, Anfänger hier) – Lucky

+0

'Matrix' ist nur ein Name, den Sie den Typ gegeben haben. Sie haben es wie Ihre anderen Arrays als eindimensionales Array deklariert. Warum erwarten Sie, dass A mehrdimensional ist, während B und C eindimensional sind, mit genau denselben Deklarationen? Google 'multidimensionales Array in Pascal' hoch, wenn Sie die Deklarationssyntax nicht kennen. – pvg

Antwort

0

Lassen Sie uns das folgende Stück Code Transkript:

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

es ist gleich:

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

und dies ist ähnlich zu:

A[1] := 0; aber nicht A[1,1] := 1 oder gleich:

Mitglieder des Arrays A kann durch einen einzigen Index zugegriffen werden.

+1

@lurker Stück Frieden :-) Korrigiert. Bitte, freundlich, fühlen Sie sich frei, irgendwelche meiner Pfosten zu korrigieren)) –