program prak3(input,output); {Inverse einer 3x3-Matrix von RenÉ Scholz } {uses crt;} var ma,inv :array[1..3,1..3] of real; det :real; function determinante:real; var h:real; begin h:= ma[1,1]*ma[2,2]*ma[3,3] + ma[1,2]*ma[2,3]*ma[3,1] + ma[1,3]*ma[2,1]*ma[3,2]; h:=h - ma[3,1]*ma[2,2]*ma[1,3] - ma[3,2]*ma[2,3]*ma[1,1] - ma[3,3]*ma[2,1]*ma[1,2]; determinante:=h; end; procedure eingabe; var z,s :integer; begin writeln;writeln;writeln;writeln; writeln('Geben Sie die 3x3-Matrix ein !');writeln;writeln;writeln; for z:=1 to 3 do begin writeln;writeln; writeln(' *** Zeile ',z:1,' eingeben ! *** '); writeln; for s:=1 to 3 do begin write('-> Element [Zeile',z:1,' , Spalte',s:1,'] ? ');readln(ma[z,s]); end; end; end; procedure ma_anzeigen; var z,s :integer; begin writeln;writeln;writeln;writeln; writeln(' *** Ausgangs-Matrix *** '); writeln;writeln;writeln; for z:=1 to 3 do begin for s:=1 to 3 do write(ma[z,s]:8:4 ); writeln; end; writeln;writeln; end; procedure rechnung; var det_adj :real; z,s,z1,z2,s1,s2 :integer; begin for z:=1 to 3 do for s:=1 to 3 do begin case z of 1 : begin z1:=2; z2:=3; end; 2 : begin z1:=1; z2:=3; end; 3 : begin z1:=1; z2:=2; end; end; case s of 1: begin s1:=2; s2:=3; end; 2: begin s1:=1; s2:=3; end; 3: begin s1:=1; s2:=2; end; end; det_adj :=ma[z1,s1]*ma[z2,s2] - ma[z1,s2]*ma[z2,s1]; if odd(z+s) then det_adj := -det_adj ; inv[s,z]:=det_adj /det; end; end; procedure ausgabe_inv; var z,s :integer; begin writeln;writeln;writeln;writeln; writeln(' *** Inverse Matrix *** '); writeln;writeln;writeln; for z:=1 to 3 do begin for s:=1 to 3 do write(inv[z,s]:8:4 ); writeln; end; writeln;writeln; end; begin { Main } { clrscr; } eingabe; det:=determinante; if (det<>0) then begin ma_anzeigen; rechnung; ausgabe_inv; writeln('Die Determinante der eingegebenen Matrix ist: ',det:8:4); writeln;writeln;writeln('By.'); end else begin writeln;writeln; writeln('Determinante = 0 ---> Inverse existiert nicht !!! '); end; end.