PI berechnen wirre zahlen



  • heeyy ich bin total neu hier und auch ein neuling was die c++ programmierung betrifft.
    in der schule haben wir eine formel hergeleitet anhand der man PI berechnen

    /*Programm zur Berechnung von PI */
    
    #include <iostream>
    #include <math.h>
    
    using namespace std;
    
    int main(void)
    {
    	long double PI = 0; 
    	long double Eckenzahl = 0;
    
    cout<<"Bitte Zahl der Ecken eingeben"<<endl;
    cin>>Eckenzahl; //Zahl der Ecken anhand der man PI annähert
    PI = Eckenzahl * sin(180/Eckenzahl) * cos(180/Eckenzahl) * 1;
    cout<<"PI für "<<Eckenzahl<<"ist ungefähr"<<PI<<endl;
    }
    

    allerdings kommen beim ausführen nur wirre zahlen raus
    kann das an der zahl der Nachkommastellen liegen?
    und bitte keine anderen Formeln PI auszurechnen (google hat mir schon einige vorschläge geliefert)denn ich möchte genau diese formel verwenden.

    Mfg qu4yt



  • 1. #include <cmath>

    2. Die trigonometrischen Funktionen erwarten Winkel im Bogenmaß, nicht in Grad
    2.a. 360° entspricht 2Pi
    2.b. http://de.wikipedia.org/wiki/Bogenmaß

    Grüße... Heiko



  • Ich vermute mal, dass sin und cos aus der Standardbibliothek mit Bogenmaß, statt mit Winkeln arbeiten. Von daher solltest du deine 180° erstmal umrechnen (in Pi), was natürlich die Aufgabe etwas zerstört 😉



  • danke für die rasche antwort 🙂
    KPC hat natürlich recht dass es die ganze ausgabe zerstört...
    naja vll bietet sich eine andere alternative an
    mfg qu4yt

    EDIT:Gibt es eine möglichkeit die winkel ohne bogenmaß einzugebenẞẞ



  • qu4yt schrieb:

    EDIT:Gibt es eine möglichkeit die winkel ohne bogenmaß einzugebenẞẞ

    Ja, du gibst sie in Grad ein und rechnest sie dann um.



  • Nexus schrieb:

    qu4yt schrieb:

    EDIT:Gibt es eine Möglichkeit die Winkel ohne Bogenmaß einzugebenẞẞ

    Ja, du gibst sie in Grad ein und rechnest sie dann um.

    Na klar - blöd bloß, dass man zur Umrechnung von Grad in's Bogenmaß PI benötigt. Oder hat jemand eine andere Idee.

    #include <iostream>
    #include <cmath>
    
    const double PI = std::acos( -1. );
    const double GRAD2RAD = PI/180.;
    
    int main()
    {
        using namespace std;
        long double Eckenzahl = 0;
    
        cout<<"Bitte Zahl der Ecken eingeben"<<endl;
        cin>>Eckenzahl; //Zahl der Ecken anhand der man PI annähert
        long double pi = Eckenzahl * sin(GRAD2RAD*180/Eckenzahl) * cos(GRAD2RAD*180/Eckenzahl);
        cout<<"PI für "<<Eckenzahl<<" ist ungefähr "<<pi<<endl;
    }
    

    Gruß
    Werner



  • Werner Salomon schrieb:

    Oder hat jemand eine andere Idee.

    Spontan würde ich sagen, schreib dir ne eigene sin- und cos-Funktion, die mit Winkeln im Gradmaß rechnet.



  • Na klar - blöd bloß, dass man zur Umrechnung von Grad in's Bogenmaß PI benötigt. Oder hat jemand eine andere Idee.

    Klar: Pi ist vier mal der Arkustangens von 1 (im Bogenmaß natürlich).



  • PI anhand von Winkelfunktionen zu berechnen erscheint mir leicht sinnlos. Die sind ja ziemlich eng mit PI verknüpft...

    Geht ja auch anders:

    http://de.wikipedia.org/wiki/Pi_%28Kreiszahl%29#Berechnung_mittels_Fl.C3.A4chenformel



  • Werner Salomon schrieb:

    Na klar - blöd bloß, dass man zur Umrechnung von Grad in's Bogenmaß PI benötigt. Oder hat jemand eine andere Idee.

    Stimmt, das wollte er ja vermeiden. Man kann natürlich den Faktor Pi/180 schon vorberechnen und dann gut im Code verstecken, dann fällt das nicht auf. 😃

    Oder man beschränkt sich eben auf Radiant.

    It0101 schrieb:

    Geht ja auch anders:

    Er hat ja explizit hingeschrieben, dass er unbedingt seine Formel verwenden möchte. 😉


  • Mod

    Wenn man sich etwas einschränkt, kann man die benötigten Sinus- und Cosinuswerte für eine ganze Reihe von N-Ecken exakt berechnen. Wenn man die werte jedoch für jedes beliebige N-Eck selber berechnen will, muss an irgendeiner Stelle versteckt der Wert von pi eingehen.



  • qu4yt schrieb:

    EDIT:Gibt es eine möglichkeit die winkel ohne bogenmaß einzugebenẞẞ

    Ja. Du schreibst über die main einfach

    #define sin(x) sin(PI/180*(x))
    #define cos(x) cos(PI/180*(x))
    


  • Was allerdings etwas konfus ist, da er ja damit PI berechnen will 😉



  • Gibt es eine möglichkeit die winkel ohne bogenmaß einzugeben

    Ja, cin.


Anmelden zum Antworten