![]() |
Division by zero - Teilen durch 0
Auf Geheiß des Moderators und nach erfolgreicher Lösung der vorhergehende Frage, nun eine neue Frage. :-D
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:
Die entsprechende Funktion in mBruchrechner sieht so aus:
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;
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; |
Re: Division by zero - Teilen durch 0
prüfst du denn ab, ob der divisor 0 ist, bevor du die division vornimmst?
|
Re: Division by zero - Teilen durch 0
Was willst du denn wissen? Warum der Fehler auftritt?
Du musst drauf achten, dass pFaktor <> 0 ist. |
Re: Division by zero - Teilen durch 0
Delphi-Quellcode:
procedure Bruch.KuerzeUm(pFaktor: integer);
begin if ((zZaehler MOD pFaktor = 0) and (zNenner MOD pFaktor = 0)) then begin zZaehler := zZaehler div pFaktor; zNenner := zNenner div pFaktor; end; end; |
Re: Division by zero - Teilen durch 0
Zitat:
Zitat:
Okay, aber wie setze ich das um? Habe es mal so versucht:
Delphi-Quellcode:
Da ist das Ergebnis der Addition aber immer 0.
procedure Bruch.KuerzeUm(pFaktor: integer);
begin if pFaktor <> 0 then begin if ((zZaehler MOD pFaktor = 0) and (zNenner MOD pFaktor = 0)) then zZaehler := zZaehler div pFaktor; zNenner := zNenner div pFaktor; end; end; |
Re: Division by zero - Teilen durch 0
Was hat den pFaktor für einen Wert?
|
Re: Division by zero - Teilen durch 0
Zitat:
|
Re: Division by zero - Teilen durch 0
Zitat:
|
Re: Division by zero - Teilen durch 0
Zitat:
Zur Zeit sieht das halt so aus:
Delphi-Quellcode:
procedure Bruch.KuerzeUm(pFaktor: integer);
begin if pFaktor <> 0 then begin if ((zZaehler MOD pFaktor = 0) and (zNenner MOD pFaktor = 0)) then zZaehler := zZaehler div pFaktor; zNenner := zNenner div pFaktor; end; 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; procedure Bruch.KuerzeVoll; begin self.KuerzeUm(self.ggT(zZaehler,zNenner)); end; |
Re: Division by zero - Teilen durch 0
Daher kommt mein Nick... :-D
Wie rufst du die Funktion denn auf? Sieht eigentlich ganz gut aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz