PROGRAM addmat(input,output);

{ Uebernimmt zwei Matrizen von der Tastatur, addiert diese und gibt das }
{ Ergebnis aus. Dabei muss es sich um Integer-Zahlen handeln. }

CONST zeilenanzahl  = 5;    { Anzahl der Matrixzeilen }
      spaltenanzahl = 5;    { Anzahl der Matrixspalten }
      anzahl        = 2;    { Anzahl der zu addierenden Matizen }

VAR   matrix :              { zu addierende Matrix }
         ARRAY [1..zeilenanzahl,1..spaltenanzahl] OF integer;
      zaehler,              { zaehlt die zu addierenden Matrizen }
      eingabe,              { speichert das angegebene Matrixelement }
      zeile,                { Zeilenindex }
      spalte :              { Spaltenindex }
         integer;

BEGIN { addmat }

  { Erste Matrix uebernehmen }
  FOR zeile := 1 TO zeilenanzahl DO
    BEGIN { eine Zeile einlesen }
      FOR spalte := 1 TO spaltenanzahl DO
          read(matrix[zeile,spalte]);
      writeln
    END;  { eine Zeile einlesen }
  writeln;

  { weitere Matrizen aufaddieren }
  FOR zaehler := 1 TO (anzahl-1) DO
    BEGIN { Matrixlesen }
      FOR zeile := 1 TO zeilenanzahl DO
        BEGIN { Verschub auf neue Zeile }
          FOR spalte := 1 TO spaltenanzahl DO
            BEGIN { Element addieren }
              read(eingabe);
              matrix[zeile,spalte]:=matrix[zeile,spalte]+eingabe
            END;  { Element addieren }
          writeln
        END;  { Vorschub auf neue Zeile }
      writeln
    END;  { Matrixlesen }

  { Matrix ausdrucken }
  FOR zeile := 1 TO zeilenanzahl DO
    BEGIN { eine Zeile drucken }
      FOR spalte := 1 TO spaltenanzahl DO
        write(matrix[zeile,spalte]:3);
      writeln
    END   { eine Zeile drucken }

END.  { addmat }