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 qu4ytEDIT: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.
-
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.