{FERTIG 02.07.98/20.19}
{1) Feldvariable vom Typ real(10x10)}
{2) Gleichungssystem}
{3) Gleichung im ges. System
{Spalte,Zeile }

{form                                A B C}
{                                    0 B C}

{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
{VORERST NUR FR EIN LGS DER FORM 4Zeilen mal 3 Spalten, ERWEITERBAR DURCH}
{VERNDERN DER ISOLIERTEN ZEILEN}
{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}

program Gleichung;
uses crt;

{STATT 3 NEUE ZEILENZAHL; STATT 4 NEUE SPALTENZAHL}
type ly_i_sys=array[1..3,1..4] of real;


var
 l:ly_i_sys;
 i,j,zahl,f,s,c,zig,b:integer;

{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
 x:array[1..4] of real;


 d:real;

procedure Variable;
var
 i,j:integer;
begin
for i:=1 to s do
  for j:=1 to f do
    begin
    writeln('Bitte geben Sie die Zahl in der ',i,'ten Zeile und der ',j,'ten Spalte an!');
    readln(l[i,j]);
    end;
end;

procedure Ausgabe(place:integer);
begin
for i:=1 to s do
 begin
 for j:=1 to f do
  begin
  gotoxy(7*j,place+i);
  write(round(l[i,j]),'  ');
  end;
  writeln;
 end;
end;

procedure Null(a:integer);
var x:real;
begin

  {Variable fr die in der Zeile erste Zahl =0}
  x:=-l[zig,zig]/l[a,zig];

  {1 Zahl mit Variable multipliziert, negativiert}
  for i:=zig to f do
  l[a,i]:=l[a,i]*x;

  {obere zu unterer Zeile addiert, Null}
  for i:=zig to f do
   l[a,i]:=l[a,i]+l[zig,i];
end;

procedure ubergabe(a:integer);
begin
for zig:=1 to a-1 do
begin
  c:=zig;
  d:=l[a,zig];
  while l[a,zig]=0 do
  begin
   if zig<a-1 then begin
                   zig:=zig+1;
                   d:=l[a,zig];
                   end
               else begin
                    d:=l[a,zig];
                    l[a,zig]:=1;
                    end;
   end;
   l[a,zig]:=d;
   if l[a,zig]<>0 then null(a);
   zig:=c;
end;
end;

procedure Loesung;
begin

for i:= s downto 1 do
 begin
 x[i]:=l[i,f];
 j:=f;
 while j>i+1 do
  begin
  x[i]:=x[i]-(l[i,j-1]*x[j-1]);
  j:=j-1;
  end;

 x[i]:=x[i]/l[i,j-1];
 writeln(x[i]);
 end;
end;

{H A U P T P R O G R A M M}
begin
c:=0;

{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
f:=4;

{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}
s:=3;


clrscr;
variable;
clrscr;
ausgabe(1);
for zahl:=2 to s do
 ubergabe(zahl);
textcolor(green);
ausgabe(14);
loesung;
readln;
end.
