myGully.com Boerse.SH - BOERSE.AM - BOERSE.IO - BOERSE.IM Boerse.BZ .TO Nachfolger
Zurück   myGully.com > Computer & Technik > Programmierung
Seite neu laden

Hilfe in c++ Programmierung gesucht.

Willkommen

myGully

Links

Forum

 
Antwort
Themen-Optionen Ansicht
Ungelesen 31.01.11, 09:32   #1
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard 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 ?
flex83 ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 09:36   #2
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Wie komm ich auf die richtige Anzahl n von x^2+y^2<0 ?
Ich meinte x^2+y^2<1 :-)
flex83 ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 12:20   #3
wmosebach
Ist öfter hier
 
Registriert seit: Jan 2010
Beiträge: 189
Bedankt: 117
wmosebach ist noch neu hier! | 0 Respekt Punkte
Standard

Ansich stimmt es schon fast, brauchst nur 1 2 Änderungen zu unternehmen:

Code:
#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,z,pi;
int n = 0;
for (int i=1; i<=1000; i++){
x=(double)rand()/(double)RAND_MAX;
y=(double)rand()/(double)RAND_MAX;
z=x*x+y*y;
if (z<1){
n++;
}
}
pi=4*n/1000;
cout << pi << endl;

system("PAUSE");
return EXIT_SUCCESS;
}
Allgemein:
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
__________________
Make the world a prettier place - get a bikini wax!
wmosebach ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 12:48   #4
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

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 :-)
flex83 ist offline   Mit Zitat antworten
Ungelesen 31.01.11, 13:35   #5
flex83
Anfänger
 
Registriert seit: Aug 2010
Beiträge: 10
Bedankt: 3
flex83 ist noch neu hier! | 0 Respekt Punkte
Standard

Zitat:
Zitat von flex83 Beitrag anzeigen
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 :-)
Blödsinn! Da muss ein Punkt hin pi=4.*n/1000;
Jetzt passt alles.
flex83 ist offline   Mit Zitat antworten
Antwort


Forumregeln
Du kannst keine neue Themen eröffnen
Du kannst keine Antworten verfassen
Du kannst keine Anhänge posten
Du kannst nicht deine Beiträge editieren

BB code is An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist Aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:47 Uhr.


Sitemap

().