![]() |
Hilfe in c++ Programmierung gesucht.
Hallo! Könnt ihr mir bitte bei der Aufgabe helfen. Habe morgen Prüfung, bin aber nicht gut in Programmierung. Danke.
Die Kreiszahl pi soll mit einem Programmnach dem Monte-Carlo-Verfahren abgeschätzt werden. Hierzu werden 1000 zufällige Punkte (x,y) mit x und y-Werten zwischen 0 und 1 erzeugt. Die Kreiszahl pi ergibt sich aus der Anzahl n der Punkte innerhalb des Einheitskreises nach der Formel pi=4*n/1000 Schreiben Sie ein C++-Programm, das die Zahl pi nach diesem Verfahren berechnet und auf dem Bildschirmausgibt. Hinweise: - x=(double)rand()/(double)RAND_MAX erzeugt einen double-Zufallswert x zwischen 0 und 1. - Binden Sie für rand() und RAND_MAX die Header-Datei stdlib.h ein. - Ein Punkt (x,y) liegt innerhalb des Einheitskreises, wenn x^2 +y^2 < 1 gilt. Habe da schon was zusammengebastelt :-) Grausam. #include <cstdlib> #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; int main(int argc, char *argv[]) { srand(time(0)); double x,y,p,z,pi,n; for (int i=1; i<=1000; i++){ x=(double)rand()/(double)RAND_MAX; y=(double)rand()/(double)RAND_MAX; z=pow(x,2)+pow(y,2); if (z<1){ p=ceil(z); //cout << z << " "<< p << endl; } } pi=4*n/100; cout << pi << endl; } system("PAUSE"); return EXIT_SUCCESS; } Wie komm ich auf die richtige Anzahl n von x^2+y^2<0 ? |
Zitat:
|
Ansich stimmt es schon fast, brauchst nur 1 2 Änderungen zu unternehmen:
Code:
#include <cstdlib> pow is ne ganz böse funktion, nutze lieber x*x wenn es solch einfache Berechnungen sind ob rand() so funktioniert, wei ich nicht 100%ig, aber so sollte die Funktion umgesetzt werden können |
Super vielen Dank. Kleine Änderung musste ich aber noch machen: statt „ int n“ habe ich als „double n“ deklariert. Sonst liefert er mir immer die Zahl 3. Danke :-)
|
Zitat:
Jetzt passt alles.:T |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 Uhr. |
Powered by vBulletin® (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.