uses crt;
const max = 5;
type vektoren = array[1..max] of real;
var c,d,e,
u,v,w,b,h,x : Vektoren; { entspricht Matrix A }
procedure write_matrix(r,s,t : Vektoren);
var i,k : integer;
begin
write(s[1]:8:3 ,' ', t[1]:8:3 , ' ');
for i:=1 to max-2 do write(0:8,' '); { Nullen in 1. Zeile anzeigen }
writeln;
for i:=2 to max-1 do
begin
for k:=1 to i-2 do write(0:8,' '); { linke Nullen anzeigen }
write(r[i]:8:3, ' ', s[i]:8:3, ' ', t[i]:8:3 , ' ');
for k:=2 to max-i do write(0:8,' '); { rechte Nullen anzeigen }
writeln;
end;
for i:=1 to max-2 do write(0:8,' '); { Nullen in max. Zeile anzeigen }
write(r[max]:8:3 ,' ', s[max]:8:3 , ' ');
writeln; writeln;
end; { of write_matrix }
procedure lies_vektoren;
var i,k :integer;
begin
writeln('Geben Sie den Vektor c ein !');
writeln;writeln;
for i:=1 to max do begin write('c[',i:1,'] ? '); readln(c[i]); end;
writeln;writeln;
writeln('Geben Sie den Vektor d ein !');
writeln;writeln;
for i:=1 to max do begin write('d[',i:1,'] ? '); readln(d[i]); end;
writeln;writeln;
writeln('Geben Sie den Vektor e ein !');
writeln;writeln;
for i:=1 to max do begin write('e[',i:1,'] ? '); readln(e[i]); end;
writeln;writeln;
writeln('Geben Sie den Vektor b ein !');
writeln;writeln;
for i:=1 to max do begin write('b[',i:1,'] ? '); readln(b[i]); end;
end; { of lies_vektoren }
procedure berechne_x;
var i :integer;
begin
v[1]:=d[1];
for i:=1 to max do u[i]:=c[i];
for i:=1 to max-1 do
begin
w[i] :=e[i]/v[i];
v[i+1]:=d[i+1]-c[i+1]*w[i];
end;
h[1]:=b[1]/v[1];
for i:=2 to max do h[i]:=(b[i]-u[i]*h[i-1])/v[i];
x[max]:=h[max];
for i:=max-1 downto 1 do x[i]:=h[i]-w[i]*x[i+1];
end; { of berechne_x }
procedure write_x;
var i :integer;
begin
writeln(' ****** Loesung ****** '); writeln;
for i:=1 to max do writeln( x[i]:10:5 );
end;
begin { main program }
clrscr;
lies_vektoren;
readln;
clrscr;
writeln(' ****** Matrix A ****** '); writeln;
write_matrix(c,d,e);
readln;
berechne_x;
writeln;writeln;
writeln(' ****** Matrix L+R ****** '); writeln;
write_matrix(u,v,w);
writeln;writeln;
write_x;
readln;
end.