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.