Code:BLOCKS c++ gibt "NaN" als Ergebnis aus
-
Guten Tag,
Mein Problem ist wenn ich bei dieser Formel die Werte eingebe kriege ich als Ergebnis nur ein "NaN" und mehr nicht.FL5= Seite "a" eines Beliebigen Dreiecks
FL6= Seite "b" eines beliebigen Dreiecks
FL7= Seite "c" eines Beliebigen DreiecksCode:
cout << "\nGamma: " << acos((((pow(FL5, 2))+(pow(FL6, 2)))-(pow(FL7, 2)))/2*(FL5*FL6)) ;
Ausgabe:
Gamma: NaN
math.h ist "include"
Ich hab versucht folgende Formel mit c++ zu realisieren
γ=arccos(a²+b²-c²)/2ab
Würde mich sehr über hilfe Freuen und danke jetzt schonmal
mfg, Koen
-
Punktrechnung vor Strichrechnung, sonst von links nach rechts. Und jetzt guck dir deine Formel noch einmal an.
-
NaN := not a number
Das Ergebnis deiner Rechnung war somit keine real darstellbare Nummer. Das weitere Vorgehen kannst du dir also denken
Grüssli
-
und am Rande: <cmath> includen und nicht math.h (an std:: denken)
-
Servus, danke für deien Antwort aber
SeppJ schrieb:
Punktrechnung vor Strichrechnung, sonst von links nach rechts. Und jetzt guck dir deine Formel noch einmal an.
Vllt steh ich ja jetzt mit nem Brett vor der Wand, aber soweit ich das sehe is doch die Punkt vor Strich-Reglung beachtet,
ich hab die Klammersätze so verteilt das er erst Potenziert
(pow(FL5, 2))
, dann die Ergebnisse zusammen rechnet und anschließend geteilt durch 2ab nimt, danach wird noch der accosinus gezogen aus dem Ergebnis O.o is doch alles Richtig oder
-
Du teilst nicht durch 2ab sondern nur durch 2 und multiplizierst dann mit ab.
-
Braunstein schrieb:
Du teilst nicht durch 2ab sondern nur durch 2 und multiplizierst dann mit ab.
Ah, danke dafür, hab den Code
cout << "\nGamma: " << acos((((pow(FL5, 2))+(pow(FL6, 2)))-(pow(FL7, 2)))/2*(FL5*FL6)) ;
in den hier umgewandelt
FL9=pow(FL5, 2) ; FL10=pow(FL6, 2) ; FL11=pow(FL7, 2) ; FL12=FL9+FL10-FL11 ; FL13=2*FL5*FL6 ; FL8=FL12/FL13 ; cout << "\nGamma: " << acos(FL8) ;
damit is auch das Problem mit dem durch 2 Teilen nicht mehr, hab jetz raus gefunden wenn ich die Zahl kleinhalte kriege ich ein Ergebnis ansonsten immernoch NaN, danke an euch mal schaun ob ich wenigstens dieses Problem hin kriege
danke an alle die geantwortet habenWUP schon is das Problem gelöst, die Zahlen wurden im Bogenmaß ausgegeben wegen dem
acos(FL8)
Befehl, das heißt ich mach einfach nen kleinen Gegenbefehl und krieg alles im Richtigen Maß raus, DANKE EUCH
-
cout << "\nGamma: " << (acos(FL5*FL5 + FL6*FL6 + FL7*FL7)/(2*FL5*FL6));
pow bringt hier nichts.
-
wxSkip schrieb:
cout << "\nGamma: " << (acos(FL5*FL5 + FL6*FL6 + FL7*FL7)/(2*FL5*FL6));
pow bringt hier nichts.
Da wiederspreche ich
Pow hat im endeffekt was gebracht das Problem lag daran das er alles im "Bogenmaß"[liegt am acos Befehl] ausgab und ich es ins Gradmaß "umwandeln" musste
tja an so einfachen fehlern kanns liegen
-
Koen schrieb:
wxSkip schrieb:
cout << "\nGamma: " << (acos(FL5*FL5 + FL6*FL6 + FL7*FL7)/(2*FL5*FL6));
pow bringt hier nichts.
Da wiederspreche ich
Pow hat im endeffekt was gebracht das Problem lag daran das er alles im "Bogenmaß"[liegt am acos Befehl] ausgab und ich es ins Gradmaß "umwandeln" musste
tja an so einfachen fehlern kanns liegenDas Umwandeln hat doch nichts mit pow zu tun?! Du musst doch bloß mit (180/3.14159265358979) multiplizieren oder dadurch Teilen, sehe ich das richtig?