Produkt zweier Matrizen in PASCAL
Ein Beispiel für die Verwendung von zweidimensionalen Arrays
(*$B-*)
PROGRAM Matrizenmultiplikation;
CONST max = 10;
TYPE MATRIX = ARRAY[1..max,1..max] OF INTEGER;
VAR n,m,p,i,j,k,s : INTEGER;
A,B,C : MATRIX;
BEGIN
(* Eingabe *)
WriteLn('A ist eine (n x m)-Matrix und');
WriteLn('B eine (m x p)-Matrix.');
WriteLn('Gib n, m und p ein:'); WriteLn;
Write('n = '); ReadLn(n);
Write('m = '); ReadLn(m);
Write('p = '); ReadLn(p);
WriteLn;
WriteLn('Gib die Matrizen zeilenweise ein, die Elemente');
WriteLn('jeder Zeile durch Leerzeichen getrennt'); WriteLn;
WriteLn('Fuer j = 1, ... ,',m); WriteLn;
FOR i := 1 TO n DO
BEGIN
Write('A[',i,'j] = ');
FOR j := 1 TO m DO Read(A[i,j]);
WriteLn
END;
WriteLn;
WriteLn('Fuer j = 1, ... ,',p); WriteLn;
FOR i := 1 TO m DO
BEGIN
Write('B[',i,'j] = ');
FOR j := 1 TO p DO Read(B[i,j]);
WriteLn
END;
WriteLn;
(* Multiplikation *)
FOR i := 1 TO n DO
FOR j := 1 TO p DO
BEGIN
s := 0;
FOR k := 1 TO m DO s := s + A[i,k]*B[k,j];
C[i,j] := s
END;
(* Ausgabe *)
WriteLn('A*B = '); WriteLn;
FOR i := 1 TO n DO
BEGIN
FOR j := 1 TO p DO Write(C[i,j],' ');
WriteLn; WriteLn
END
END.