Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   programm fehler (pq-formel) - numerische datentypen (https://www.delphipraxis.net/42215-programm-fehler-pq-formel-numerische-datentypen.html)

pete_knightde 15. Mär 2005 21:01

Re: programm fehler (pq-formel) - numerische datentypen
 
wenn ich die datei compiliere
und für p=2 und q=3 eingebe, als beispiel

dann kommt folgende fehlermeldung

Im Projekt Projekt1.exe ist eine Exception der Klasse EInvalidOp aufgetreten. Meldung: 'Ungültige Gleitkommaoperation'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortfahren.


danach ist folgender bereich blau markiert
Delphi-Quellcode:
if sqrt(Sqr(p)/4-q)<0

mirage228 15. Mär 2005 21:03

Re: programm fehler (pq-formel) - numerische datentypen
 
Du musst vorher prüfen, ob der Ausdruck unter Wurzel bzw. in sqrt() kleiner als Null ist.

Delphi-Quellcode:
var
  Num: Real;
begin
  Num := Sqr(P)/4 - q;´
  if Num >= 0 then
  begin
    // jetzt mit sqrt() weitermachen.
  end;
end;
mfG
mirage228

pete_knightde 15. Mär 2005 21:04

Re: programm fehler (pq-formel) - numerische datentypen
 
ich hab mal die komplette datei geuppt, damit sich das einige angucken können
http://home.arcor.de/pkde/pq%20aufgabe.zip

gordon freeman 15. Mär 2005 21:10

Re: programm fehler (pq-formel) - numerische datentypen
 
Zitat:

Zitat von pete_knightde
wenn ich die datei compiliere
und für p=2 und q=3 eingebe, als beispiel(...)
Delphi-Quellcode:
if sqrt(Sqr(p)/4-q)<0

Wenn du nachrechnest wirst du feststellen, dass Delhi das auch nicht errechnen kann, denn

((2^2)/4)-3 = (4/4)-3 = 1-3 = -2

und daraus kann man nun mal keine Wurzel ziehen!

Hier nochmal die Reihenfolge, in der du prüfen musst:
  • 1. Ist der Term sqr(p)/4-q größer oder gleich 0?
    • Nein - Gleichung hat keine Lösungen
    • Ja - Weitermachen
  • 2. Ist der Term sqrt((p^2/4)-q) gleich 0?
    • Ja - Gleichung hat eine Lösung => Die Lösung ausrechnen!
    • Nein - Die Gleichung hat 2 Lösungen => beide Lösungen ausrechnen

Danach kannste das ganze entsprechend ausgeben.

read you, gordon :cheers:

pete_knightde 15. Mär 2005 21:13

Re: programm fehler (pq-formel) - numerische datentypen
 
Zitat:

Zitat von gordon freeman
Zitat:

Zitat von pete_knightde
wenn ich die datei compiliere
und für p=2 und q=3 eingebe, als beispiel(...)
Delphi-Quellcode:
if sqrt(Sqr(p)/4-q)<0

Wenn du nachrechnest wirst du feststellen, dass Delhi das auch nicht errechnen kann, denn

((2^2)/4)-3 = (4/4)-3 = 1-3 = -2

und daraus kann man nun mal keine Wurzel ziehen!

Hier nochmal die Reihenfolge, in der du prüfen musst:
  • 1. Ist der Term sqr(p)/4-q größer oder gleich 0?
    • Nein - Gleichung hat keine Lösungen
    • Ja - Weitermachen
  • 2. Ist der Term sqrt((p^2/4)-q) gleich 0?
    • Ja - Gleichung hat eine Lösung => Die Lösung ausrechnen!
    • Nein - Die Gleichung hat 2 Lösungen => beide Lösungen ausrechnen

Danach kannste das ganze entsprechend ausgeben.

read you, gordon :cheers:

wenn ich das mache, dann kommt z.b. bei p=2, q=-3 "keine lösung"
das stimmt ja überhaupt nicht

gordon freeman 15. Mär 2005 21:19

Re: programm fehler (pq-formel) - numerische datentypen
 
Zitat:

Zitat von pete_knightde
wenn ich das mache, dann kommt z.b. bei p=2, q=-3 "keine lösung"
das stimmt ja überhaupt nicht

Wieso? WEnn man nach meinem Algo geht musst du als erstes den Term sqr(p)/4-q test, ob er größer 0 ist:

Mit deinen Beispielen (übertriebene Klammersetzung):

((sqr(2))/4)-(-3) = (4/4) -(-3) = 1 + 3 = 4

und somit ist der Term positiv und die Wurzel ist nicht Null, also erhält man 2 Lösungen :wink:

pete_knightde 15. Mär 2005 21:25

Re: programm fehler (pq-formel) - numerische datentypen
 
kann mal jemand das programm ausprobieren
ist alles notwendige dabei

http://home.arcor.de/pkde/pq%20aufgabe.zip

gordon freeman 15. Mär 2005 21:29

Re: programm fehler (pq-formel) - numerische datentypen
 
Zitat:

Zitat von pete_knightde
kann mal jemand das programm ausprobieren
ist alles notwendige dabei

http://home.arcor.de/pkde/pq%20aufgabe.zip

Sollte es denn jetzt das ganze korrekt berechnen oder funktioniert irgendetwas immer noch nicht?
Hab's mir mal geladen und guck's mir mal eben an!

gordon freeman 15. Mär 2005 21:37

Re: programm fehler (pq-formel) - numerische datentypen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Okay, dein Fehler liegt darin, dass du die Berechnungen von X1 und X2 außerhalb des If-Then Blocks durchführst. Diese Berechnungen können ja teilweise gar nicht durchgeführt werden!
Also gehören die Berechnungen in den If-Block!
Außerdem fragt deine 1. Abfrage immer noch direkt die Wurzel ab, dabei sollte zuerst gefragt werden, ob der Term unter der Wurzel < 0 ist!! hab das ganze mal berichtigt und angehängt.



//Edit1: Außerdem möchte ich noch folgendes sagen: Die DP ist kein Hausaufgabe-Hilfe-Forum, in dem jeder seine Hausaufgaben postet und gemacht bekommt. Es wird gewisse Kooperation seitens dessen erwartet, der die Aufgabe lösen soll. Ich habe heute nur viel Geduld, weil ich weiß, wie es ist im Info-Unterricht zu sitzen, bei einem total inkompetenten Lehrer und dann auch noch Homeworks machen zu müssen :wink:

pete_knightde 15. Mär 2005 21:52

Re: programm fehler (pq-formel) - numerische datentypen
 
ja, das klappt
danke für eure hilfe
auf euch ist verlass


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:41 Uhr.
Seite 2 von 2     12   

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-2025 by Thomas Breitkreuz