{Praktikums-Aufgabe III : N.9 von RenÉ Scholz}

program prak3 (input,output);

const N = 3;

var  i,j,k,l        :integer;
     s,c,d          :real;
     a,a1,g,h       :array [1..N,1..N] of real;

{-----------------------------------------------------------------------}

begin   { Main }

 writeln;writeln;writeln;

 for i:=1 to N do
   begin
    writeln('      ',i,'. Zeile eingeben !');
    for j:=1 to N do readln(a[i,j]);
   end;

 writeln;writeln;writeln;writeln;writeln;
 writeln('                      ***  Gegebene Matrix  ***  : ');writeln;

 for i:=1 to N do
  begin
   for j:= 1 to N do
    begin
     write(a[i,j]:8:4 ,'     ');
     a1[i,j]:=a[i,j];
    end;
  writeln;
  end;

 for i:= 1 to N do
  begin

    s:=0;
    for j:=1 to N do s:=s+a[j,j];
    c:=s/i;

    for j:=1 to N do
      for k:=1 to N do
       if j=k then h[j,j]:=a[j,j]-c else h[j,k]:=a[j,k];

    if i=N-1 then
      for j:=1 to N do
       for k:=1 to N do g[j,k]:=h[j,k];

    for j:=1 to N do
      for k:=1 to N do
       begin
        s:=0;
        for l:=1 to N do s:=s+a1[j,l]*h[l,k];
        a[j,k]:=s;
       end;

 end;


if (c<>0) then
  begin
   writeln;writeln;writeln;
   writeln('                      ***  Inverse  Matrix  ***  : ');writeln;
   for i:=1 to N do
    begin
     for j:=1 to N do
        begin
          g[i,j]:=g[i,j]/c;
          write(g[i,j]:8:4 ,'     ');
        end;
     writeln;
    end;
   writeln;writeln;
   if not(odd(n)) then c:=-c;
   writeln('  --> Determinante  = ',c:8:4);
   writeln;writeln;writeln;
  end

else
 begin
  writeln;writeln;writeln;
  writeln('### Matrix singulaer , die Inverse existiert nicht ! ###');
 end;

writeln;writeln;

end.  { End of main }