Problem mit Wurzel



  • Hallo Leute! 😃

    Ich habe ein kleines Programm geschrieben das sich an Pi annähern soll. Dabei nutzt es die Formel (9801/4412) * Wurzel aus 2. Deshalb hab ich folgendes geschrieben:

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    cout << (9801/4412)*sqrt(2);
    }
    

    Das bekomm ich aber nur den Fehler:

    `

    1>main.cpp

    1>.\main.cpp(7) : error C3861: "sqrt": Bezeichner wurde nicht gefunden.

    1>Das Buildprotokoll wurde unter "*****" gespeichert.

    1>Pi - 1 Fehler, 0 Warnung(en)

    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    `

    Was mach ich falsch? 😞



  • #include <cmath>
    

    Und

    9801.0/4412
    

    Sonst hast du eine Ganzzahldivision -> der Nachkommateil wird weggeworfen.



  • Das geht leider auch nicht! Dann kommt noch ein Fehler (Ich schreibe es in C++):

    `

    1> C:\Program Files\Microsoft Visual Studio 9.0\VC\include\math.h(128): oder "double sqrt(double)"

    1> bei Anpassung der Argumentliste '(int)'

    1>Das Buildprotokoll wurde unter "******" gespeichert.

    1>Pi - 1 Fehler, 0 Warnung(en)

    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========

    `



  • Auch den sqrt-Parameter als double deklarieren:

    (9801.0/4412.0)*sqrt(2.0)
    

    Es gibt aber noch eine andere einfachere Formel dazu:

    4.0 * atan(1.0)
    

    -)



  • Das funzt schon THX! Aber es beendet gleich nachher ohne das ich was sehe! 😞

    EDIT: Und es rechnet nur auf 4-Stellen 😮



  • Jetzt bist du aber definitiv im falschen Subforum:
    s. http://www.c-plusplus.net/forum/viewtopic-var-t-is-111042.html

    Und rechnen tut er schon genauer aber wahrscheinlich nur weniger Nachkommastellen anzeigen - such mal nach 'precision'...

    Edit: wie weiß du, daß er nur auf 4 Stellen rechnet, wenn du ehe nichts siehst -)



  • Weil ich mit STRG+F5 es so ausführen kann das es geht!



  • Du musst das Programm halt über die Kommandozeile ausführen, nicht einfach draufklicken, oder du machst am Ende des Programms getchar();.


Anmelden zum Antworten