AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Division by zero - Teilen durch 0

Ein Thema von HackZu · begonnen am 24. Sep 2008 · letzter Beitrag vom 25. Sep 2008
Antwort Antwort
Seite 1 von 3  1 23      
HackZu

Registriert seit: 27. Aug 2008
15 Beiträge
 
#1

Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 21:55
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;
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#2

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:05
prüfst du denn ab, ob der divisor 0 ist, bevor du die division vornimmst?
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#3

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:05
Was willst du denn wissen? Warum der Fehler auftritt?

Du musst drauf achten, dass pFaktor <> 0 ist.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:06
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;
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
HackZu

Registriert seit: 27. Aug 2008
15 Beiträge
 
#5

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:24
Zitat von grenzgaenger:
prüfst du denn ab, ob der divisor 0 ist, bevor du die division vornimmst?
Nein.

Zitat von divBy0:
Was willst du denn wissen? Warum der Fehler auftritt?

Du musst drauf achten, dass pFaktor <> 0 ist.
Ja.

Okay, aber wie setze ich das um? Habe es mal so versucht:

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;
Da ist das Ergebnis der Addition aber immer 0.
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#6

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:26
Was hat den pFaktor für einen Wert?
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#7

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:32
Zitat von HackZu:
Zitat von grenzgaenger:
prüfst du denn ab, ob der divisor 0 ist, bevor du die division vornimmst?
Nein.
und weshalb nicht? meist der rechner meckert schon, wenn er durch 0 teilt ... aber das gefällt dir ja auch nicht oder
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#8

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:33
Zitat von divBy0:
Was hat den pFaktor für einen Wert?
in diesem fall wohl NULL und dann gibts deinen nick 8)
  Mit Zitat antworten Zitat
HackZu

Registriert seit: 27. Aug 2008
15 Beiträge
 
#9

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:35
Zitat von divBy0:
Was hat den pFaktor für einen Wert?
Das ist ja das Problem, wir haben diese Unit aus einem alten Projekt übernommen, bei dem der Benutzer den Faktor eingeben musste (kuerzeUm) oder pFaktor den Wert des ggT annahm (kuerzeVoll) mit dem dann gekürzt wurde, daher meine Frage, wie ich das kuerzeUm auf das neue Projekt anpassen muss?

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;
  Mit Zitat antworten Zitat
Benutzerbild von divBy0
divBy0

Registriert seit: 4. Mär 2007
Ort: Sponheim
1.021 Beiträge
 
Delphi XE2 Professional
 
#10

Re: Division by zero - Teilen durch 0

  Alt 24. Sep 2008, 22:37
Daher kommt mein Nick...

Wie rufst du die Funktion denn auf? Sieht eigentlich ganz gut aus.
Marc
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt, die 10. summt die Melodie von Tetris... | Wenn das die Lösung ist, dann hätte ich gerne mein Problem zurück! | engbarth.es
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz