(*$B- Aufgabe 5.1 *) PROGRAM cramer; TYPE vektor = ARRAY[1..10] OF real; matrix = ARRAY[1..10] OF vektor; VAR i,j,n:integer; s,d:real; ai,a : matrix; b,x:ARRAY[1..10] OF real; stri: string[20]; ein,tf : text; (*$I alg5_2*) PROCEDURE print(n:integer; a:matrix); VAR i,j : integer; BEGIN FOR i := 1 TO n DO BEGIN writeln(tf); FOR j:=1 TO n DO write(tf,a[i,j]:12:3) END; writeln(tf) END; BEGIN writeln('Wohin mit dem Output ? '); read(stri); assign(tf,stri); rewrite(tf); writeln('woher kommt der Input ?'); readln; readln(stri); assign(ein,stri); reset(ein); writeln('n eingeben'); read(ein,n); writeln('Matrix A zeilenweise eingeben'); FOR i:=1 TO n DO FOR j:=1 TO n DO read(ein,a[i,j]); writeln('rechte Seite eingeben'); FOR i := 1 TO n DO read(b[i]); (*Skalierung fuer Rundungsfehler *) writeln(tf,'Gegebene Matrix'); print(n,a); writeln(tf); writeln(tf,'rechte Seite'); FOR i:=1 TO n DO writeln(tf,b[i]:12:7); d := det(n,a); writeln(tf,'Determinante von A = ',d); FOR i := 1 TO n DO BEGIN ai:= a; FOR j := 1 TO n DO ai[j,i] := b[j]; x[i] := det(n,ai)/d; writeln(tf,'x[',i:2,'] = ',x[i]); END; writeln(tf);writeln(tf, 'Residuenvektor'); FOR i:=1 TO n DO BEGIN s:=-b[i]; FOR j := 1 TO n DO s := s + a[i,j]*x[j]; writeln(tf,s); END; close(tf); close(ein) END.