1
1143
Gast
Hallo.
Ich muss bei einer Übungsaufgabe ein kleines Java-Programm schreiben, was mir PI ausrechnet, und zwar mit Buffon.
Die exakte Aufgabenstellung findet man hier: http://www.uni-marburg.de/fb12/formalemethoden/vorlesungen/praktinf1/tutorium/zettel06 (Aufgabe 3)
Hier ist der Code dazu, den ich bereits geschrieben hab. Wo das Problem liegt, hab ich bei der betreffenden Methode ("public void berechneTreffer", zu finden ganz unten bei Hilfsmethoden) als Kommentar drüber geschrieben.
Vllt. könnt ihr mir ja weiterhelfen ...[/code]
Ich muss bei einer Übungsaufgabe ein kleines Java-Programm schreiben, was mir PI ausrechnet, und zwar mit Buffon.
Die exakte Aufgabenstellung findet man hier: http://www.uni-marburg.de/fb12/formalemethoden/vorlesungen/praktinf1/tutorium/zettel06 (Aufgabe 3)
Hier ist der Code dazu, den ich bereits geschrieben hab. Wo das Problem liegt, hab ich bei der betreffenden Methode ("public void berechneTreffer", zu finden ganz unten bei Hilfsmethoden) als Kommentar drüber geschrieben.
Code:
public class Buffon{
double mittelpunkt;
double theta;
double genaehertesPi;
double abstand;
int anzahlWuerfe;
int anzahlTreffer;
public void werfeNadel(){
mittelpunkt = (double)(Math.random());
theta = (double)(2*Math.PI*Math.random());
anzahlWuerfe ++;
berechneAbstand();
berechneTreffer();
}
public void werfeNadel(int k){
while (k > 0){
werfeNadel();
k--;
}
}
public void approximatePi(){
genaehertesPi = (2*anzahlWuerfe)/anzahlTreffer;
}
//Hilfsmethoden
//Berechnet den Abstand vom Mittelpunkt der Nadel zur nächstgelegenen Linie.
public void berechneAbstand(){
if (mittelpunkt <= 0.5) {abstand = 0.5 - mittelpunkt;} else {abstand = 1 - mittelpunkt;}
}
/* Diese Sch...-Methode funktioniert einfach nicht! Das Programm weigert sich beharrlich, mir 1/2*Math.sin(theta) auszurechnen,
* warum auch immer. Es kommt immer Null raus und dem zufolge bleibt auch die Anzahl der Treffer immer Null. :-/
* Vllt. wisst ihr ja, wo hier das Problem liegt.
*/
public void berechneTreffer(){
if (abstand <= 1/2*Math.sin(theta)) {anzahlTreffer++;}
}
}
Vllt. könnt ihr mir ja weiterhelfen ...[/code]