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 Dreiecks

    Code:

    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


  • Mod

    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 haben 🙂

    WUP 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 liegen

    Das Umwandeln hat doch nichts mit pow zu tun?! Du musst doch bloß mit (180/3.14159265358979) multiplizieren oder dadurch Teilen, sehe ich das richtig?


Log in to reply