Ich hoffe meine Mathekenntnisse sind schon ausgeschlafen.
Aber das dürfe schon stimmen. (Hab' es aber nicht getestet)
Delphi-Quellcode:
az := e_z1;
an := e_n1;
bz := e_n2;
bn := e_z2;
If b_plus Then Begin
az := az * bn; {erweitern}
bz := bz * an;
an := an * bn:
{bn := bn * an:}
ez := az + bz; {rechnen}
en := an:
End;
If b_minus Then Begin
az := az * bn; {erweitern}
bz := bz * an;
an := an * bn:
{bn := bn * an:}
ez := az - bz; {rechnen}
en := an:
End;
If b_mal Then Begin
ez := az * bz; {rechnen}
en := an * bn:
End;
If b_div Then Begin
ez := az * bn; {rechnen}
en := an * bz:
End;
{kürzen}
For I := Min(Abs(ez), Abs(en)) downto 2 do
If (ez mod I2 = 0) and (en mod I2 = 0) Then Begin
ez := ez div I2;
en := en div I2;
Break;
End;
e_ergz := ez;
e_ergn := en;