Hallo zusammen hab mir grad eine Procedure geschrieben die mir aus einem Bruchtrainer ( 2 Brüche werden addier/subtrahier etc) Die vollständig gekürzte Lösung ausgibt. Das Problem was ich gerade habe ist das er mir immer ausgibt das das ergebnis falsch gekürzt ist...
Quellcode is bis jetz etwas unübersichtlich da ich noch am rumprobieren bin. Hoffe das mir trotzd, jemand helfen kann.
Delphi-Quellcode:
procedure TForm1.edtErgClick(Sender: TObject);
var a,b,c,d,r1,r2,erg1,erg2,rest,ggt,z1,z2 : Integer;
q1,q2: Extended;
begin
a := StrToInt(edtBr1_1.Text);
b := StrToInt(edtBr1_2.Text);
c := StrToInt(edtBr2_1.Text);
d := StrToInt(edtBr2_2.Text);
erg1 := StrToInt(edtBr3_1.Text);
erg2 := StrToInt(edtBr3_2.Text);
//------------------------Berechnen---------------------------------------------
if lblOp.Caption = '+' then
Begin
r1 := ((a * d) + (c * b));
r2 := (b * d);
end
else if lblOp.Caption = '-' then
Begin
r1 := ((a * d) - (c * b));
r2 := (b * d);
end
else if lblOp.Caption = '*' then
Begin
r1 := a*c;
r2 := b*d;
end
else if lblOp.Caption = '/' then
Begin
r1 := a*d;
r2 := b*c;
end;
q1 := r1 / r2;
q2 := erg1 / erg2;
//--------------------------Ende Berechnen--------------------------------------
//--------------------------GGT Suchen------------------------------------------
z1 := r1;
z2 := r2;
repeat
rest := z1 mod z2;
z1 := z2;
z2 := rest;
until rest = 0;
ggt := z1;
//--------------------------Ende GGT Suchen-------------------------------------
if (q1 = q2) and (erg1 / ggt = r1 div z1) and (erg2 / ggt = r2 div z1) then
Begin
lblKor.Font.Color := clGreen;
lblKor.Caption := 'Korrekt';
end
else if (q1 = q2) then
Begin
lblKor.Font.Color := clYellow;
lblKor.Caption := 'Falsch gekürzt';
end
else
Begin
lblKor.Font.Color := clRed;
lblKor.Caption := 'Falsch';
end;
lblKor.Visible := true;
edtKor1.Visible := True;
edtKor2.Visible := True;
edtKor1.Text := IntToStr(r1 div z1);
edtKor2.Text := IntToStr(r2 div z1);
end;