Auf Geheiß des Moderators und nach erfolgreicher Lösung der vorhergehende Frage, nun eine neue Frage.
Der nächste Fehler scheint hier zu entstehen, es wird die Fehlermeldung Division durch 0 ausgegeben, muss die Methode um die Zähler und Nenner der beiden Brüche erweitert werden?
mBruch
Delphi-Quellcode:
procedure Bruch.KuerzeUm(pFaktor: integer);
begin
if ((zZaehler MOD pFaktor = 0) and (zNenner MOD pFaktor = 0)) then
zZaehler := zZaehler div pFaktor;
zNenner := zNenner div pFaktor;
end;
function Bruch.ggt(zZaehler,zNenner:integer): integer;
begin
if zZaehler = zNenner then result := zZaehler
else
result := ggt(min(zNenner,zZaehler), abs(zZaehler-zNenner));
end;
Die entsprechende Funktion in mBruchrechner sieht so aus:
Delphi-Quellcode:
function Bruchrechner.Addition(pBruch1,pBruch2: Bruch): Bruch;
begin
result:=Bruch.init;
result.setzeNenner(pBruch2.gibNenner * pBruch1.gibZaehler);
result.setzeZaehler(pBruch1.gibZaehler * pBruch2.gibNenner + pBruch2.gibZaehler * pBruch1.gibNenner);
result.KuerzeVoll;
end;