Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Fehlermeldung DIV 0 !!! (https://www.delphipraxis.net/61293-fehlermeldung-div-0-a.html)

icqgoofy 19. Jan 2006 15:50


Fehlermeldung DIV 0 !!!
 
Hallo zusammen,

ich muss für Informatik ein Programm schreiben und
wir sollen die einzenen Rechenschritte aufteilen.

Soweit, so gut!
Das Programm lässt sich auch ohne Probleme compilieren, aber
beim Ausführen, wenn ich die Eingaben gemacht habe. (Funktion, Punkt)

Der Fehler mit DIV 0 tritt in folgender Prozedur auf:

Delphi-Quellcode:
procedure TFPunktEingabe.Ableitung_Berechnen;  //Ableitung berechnen über Faktorregel
var SummandG1, SummandH1 : Real;     //lokale Variablen zum Errechenen von mt oder f'(x)
begin
  VorfaktorG1:=VorfaktorG*ExponentG;
  ExponentG1:=ExponentG-1;
  VorfaktorH1:=VorfaktorH*ExponentH;
  ExponentH1:=ExponentH-1;
  SummandG1:=exp((ExponentG1)*ln(VorfaktorG1*xPunkt)); //y = x^n; <--- in dieser Zeile wird der Fehler angezeigt,und dann folglich auch in der unteren
  SummandH1:=exp((ExponentH1)*ln(VorfaktorH1*xPunkt));
  Ableitung1:=SummandG1+SummandH1;  // f'(x) = g'(x) + h'(x); [Faktorregel]
end;
Anmerkung:
die genannten Variablen sind alle global deklariert[Ausnahme: SummandG1, SummandH1],
da das Programm aus 10 Prozeduren besteht.

Kann mir jemand helfen?

Gruß icqgoofy

Dust Signs 19. Jan 2006 15:57

Re: Fehlermeldung DIV 0 !!!
 
Ich kann mir höchstens vorstellen, dass der Ln von 0 berechnet wird... tritt der Fehler immer auf oder nur bei bestimmten Exponenten (würde ich mal stark vermuten)

Dust Signs

icqgoofy 20. Jan 2006 13:51

Re: Fehlermeldung DIV 0 !!!
 
Also ich habve habe es mit vielen Variaben versucht, und
immer tritt der der Fehler bei "SummandG1" auf, habe auch H und G Werte vertauscht,
aber IMMER nur bei G!!!#

Gruß icqgoofy

DevilsCamp 20. Jan 2006 14:07

Re: Fehlermeldung DIV 0 !!!
 
Da dein Problem immer nur bei G kommt, liegt es wohl an VorfaktorG1.

Welchen Wert hat denn VorfaktorG1, NACH der Zuweisung?

Delphi-Quellcode:
VorfaktorG1:=VorfaktorG*ExponentG;
<edit>
Sicher, dass XPunkt nie 0 ist?
</edit>

icqgoofy 20. Jan 2006 14:10

Re: Fehlermeldung DIV 0 !!!
 
hat sich geklärt:)
Fehler behoben, hatte in der Prozedur, von der aus die anderen Prozeduren
ausgeführt werden, die falsche Reihenfolge,
sodass die Variable xPunkt erst nach jener Prozedur definiert wurde.

Gruß icqgoofy

Cyberbob 20. Jan 2006 14:48

Re: Fehlermeldung DIV 0 !!!
 
Ich würde bei Delphi statt Real den Datentyp Extended verwenden.

icqgoofy 20. Jan 2006 15:20

Re: Fehlermeldung DIV 0 !!!
 
Hm, bei der Endüberprüfung ist mir in oben genannter Prozedur aufgefallen:

Delphi-Quellcode:
procedure TFPunktEingabe.Ableitung_Berechnen;  //Ableitung berechnen über Faktorregel
var SummandG1, SummandH1, FaktorG, FaktorH : Real;     //lokale Variablen zum Errechenen von mt oder f'(x)
begin
  VorfaktorG1:=VorfaktorG*ExponentG;
  ExponentG1:=(ExponentG)-1;
  VorfaktorH1:=VorfaktorH*ExponentH;
  ExponentH1:=(ExponentH)-1;
  FaktorG:=VorfaktorG1*xPunkt;
  FaktorH:=VorfaktorH1*xPunkt;                          
  SummandG1:=exp((ExponentG1)*ln(FaktorG)); //y = x^n;    //Problem!!!!!!!!!!! <--- normalerweise ist x^0 = 1, er berechnet aber etwas anderes, wieso???
  SummandH1:=exp((ExponentH1)*ln(FaktorH));
  Ableitung1:=SummandG1+SummandH1;
end;
Wieso ist x^0 nicht gleich 1 ?????

Gruß icqgoofy

Muetze1 20. Jan 2006 15:23

Re: Fehlermeldung DIV 0 !!!
 
x^0 = 1

x^1 = x

Du rechnest aber x*0, und das ist immer 0.

icqgoofy 21. Jan 2006 13:48

Re: Fehlermeldung DIV 0 !!!
 
Sorry, ich habe mich verschrieben.
Natürlich meinte ich, warum x^0 nicht 1 ergibt, denn
so erhalte ich immer andere Ergebnisse

Gruß icqgoofy

mirage228 21. Jan 2006 13:50

Re: Fehlermeldung DIV 0 !!!
 
Zitat:

Zitat von icqgoofy
Sorry, ich habe mich verschrieben.
Natürlich meinte ich, warum x^0 nicht 1 ergibt, denn
so erhalte ich immer andere Ergebnisse

Zitat:

Zitat von Muetze1
Du rechnest aber x*0, und das ist immer 0.

mfG
mirage228


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:44 Uhr.
Seite 1 von 2  1 2      

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