| 1 | PROGRAM GAUSS (INPUT, OUTPUT); |
| 2 | |
| 3 | VAR I, J, K, L, M, N: INTEGER; |
| 4 | Q: REAL; |
| 5 | A: ARRAY[1..9, 1..10] OF REAL; |
| 6 | X: ARRAY[1..9] OF REAL; |
| 7 | |
| 8 | BEGIN (*EINLESEN DER KOEFFIZIENTEN UND DER RECHTEN SEITEN*) |
| 9 | READ(N); WRITELN("N =",N:2); |
| 10 | FOR I := 1 TO N DO |
| 11 | BEGIN |
| 12 | FOR J := 1 TO N+1 DO BEGIN READ(A[I,J]); WRITE(A[I,J]:8:2) END; |
| 13 | WRITELN |
| 14 | END; |
| 15 | FOR I := 1 TO N-1 DO |
| 16 | BEGIN (*AUFSUCHEN DES GROESSTEN KOEFFIZIENTEN A[I,J]*) |
| 17 | M := I; |
| 18 | FOR K:=I+1 TO N DO |
| 19 | IF ABS(A[K,I]) > ABS(A[M,I]) THEN M := K; |
| 20 | IF M <> I THEN (*ZEILENTAUSCH*) |
| 21 | FOR J := I TO N+1 DO |
| 22 | BEGIN |
| 23 | Q := A[I,J]; A[I,J] := A[M,J]; A[M,J] :=Q |
| 24 | END; |
| 25 | (* ELIMINATION DER X[I] AUS D. K-TEN GLEICHUNG *) |
| 26 | FOR K:= I+1 TO N DO |
| 27 | BEGIN Q:=A[K,I]/A[I,I]; |
| 28 | FOR J:=I+1 TO N+1 DO A[K,J]:=A[K,J]-A[I,J]*Q |
| 29 | END; |
| 30 | END; |
| 31 | FOR I := N DOWNTO 1 DO (* BERECHNUNG VON X[I]*) |
| 32 | BEGIN Q := A[I,N+1]; |
| 33 | FOR J := I+1 TO N DO Q := Q - A[I,J]*X[J]; |
| 34 | X[I] := Q/A[I,I] |
| 35 | END; |
| 36 | WRITELN; |
| 37 | FOR I := 1 TO N DO (*AUSGABE VON X[I] *) |
| 38 | WRITELN("X",I:1, " = ", X[I]:8:2) |
| 39 | END. |