Frage von Knafan, 44

Free Pascal Programmierung bendet sich nach dem Ausführen?

Hallo!

Ich habe ein Programm zum Berechnen aller Seiten und WInkelgrößen im Dreieck geschrieben. Es lässt sich auch ausführen.... doch bei allen Aufgaben, in denen der Kosinussatz benutzt werden soll, beendet sich das Programm direkt. Vor dem Beenden zeigt es allerdings für den Bruchteil einer Sekunde einen Fehler. Habe diesen mal rausgeschrieben. Kann jemand etwas damit anfangen? Bzw hat jemand eine Ahnung woran es liegen könnte? Hier der Fehler: an unhandled exception occurred at $0040198F :

EInvalidOp : Invalid floating point operation $0040198F $0040247B

Würde mich freuen, wenn mir jemand weiterhelfen kann. Also mir sagen kann, was dieser Fehler bedeutet.

Knafan

Antwort
von zalto, 11

Habe mir mal Deine Formeln angeschaut: Kann es sein, dass Du versuchst aus einer negativen Zahl die Quadratwurzel zu ziehen? Oder dass Du durch Null teilst? Beides würde ich vorher prüfen und abfangen.

Antwort
von Willibergi, 25

Wie sieht denn die Methode zum Berechnen  mit dem Kosinussatz aus?

LG Willibergi

Kommentar von Knafan ,

Hallo Willibergi,

PROCEDURE WinkelCcos;
begin

IF (gamma=0) and (a<>0) and (b<>0) and (c<>0) THEN
gammatemp:=(a^2+b^2-c^2)/2*a*b;

IF (gamma=0) and (gammatemp<>0) THEN
gamma:=arccos(gammatemp);
end;

IF (c=0) and (a<>0) and (b<>0) and (Bogenmassc<>0) THEN
c:=sqrt(a^2+b^2-2*a*b*cos(Bogenmassc));
end;


Das sind die Formeln. Ich weiß... man kann das auch einfacher schreiben (also in einer Bedingung).. aber darum kümmer ich mich später


Knafan

Kommentar von Willibergi ,

Der Fehler müsste in folgender Zeile liegen:

"c:=sqrt(a^2+b^2-2*a*b*cos(Bogenmassc));"

oder in dieser:

"gammatemp:=(a^2+b^2-c^2)/2*a*b;"

Ersetze doch nacheinander beide Zeilen durch etwas einfaches (Ausgabe) und gucke, wann der Fehler verschwindet.

Dann weißt du, in welchem Befehl der Fehler passiert und kannst gezielt mit Konsolenausgaben oder Debugger-Tools nach ihm suchen.

LG Willibergi

Kommentar von Knafan ,

Danke! Ich werde es mal versuchen.

Kommentar von Willibergi ,

Gern geschehen! ;)

LG Willibergi

Keine passende Antwort gefunden?

Fragen Sie die Community