Results 1 to 4 of 4
Thread: Calculating Pi
- 03-03-2013, 08:59 PM #1
Member
- Join Date
- Mar 2013
- Posts
- 2
- Rep Power
- 0
Calculating Pi
Hi,
New to the forum! Gotten a bit stuck on a bit of coding i'm doing for a class, wondered if you could help me at all.
The program is supposed to generate two random numbers and input them to the equation X^2+Y^2, this can then used to calculate Pi.
Anyways, the code works and does generate a value close to pi, i am now trying to adapt it so that the user can input the number of random trials so it
reaches a desired accuracy, which is where i run into a problem. If you where to enter 10 trials, then 100, then a thousand it doesn't simple calculate pi for this many trials. The third entry would calculate pi for 1110 trials. Is there anyway i can get it to "forget" the number of trials the user enters at the end of each loop? Here is the code i have so far:
Thanks for any help in advance!PHP Code:import java.io.*; import java.util.Random; class Week5Part4 { static BufferedReader keyboard = new BufferedReader (new InputStreamReader(System.in)); static PrintWriter screen = new PrintWriter( System.out, true); static Random value = new Random(); private static double p(double X, double Y) { return ((X*X)+(Y*Y)); } public static void main (String [] args ) throws IOException { screen.println("The value of Pi stored in the Math class is " + Math.PI); screen.println("\n\n"); double sum = 0; double overflow = 0; int trials; double nextX; double nextY; do { screen.println(" Enter the number of trials needed"); trials = new Integer(keyboard.readLine()).intValue(); for (int n =0; n<=trials-1; n++) { nextX = value.nextDouble(); nextY = value.nextDouble(); if (p(nextX,nextY)<1) sum++; if (p(nextX,nextY)>=1) overflow++; } screen.println("The value of Pi is " + ((4*sum)/trials) + " calculated by the program"); screen.println("sum " + sum + " Overflow " + overflow + " Total " + (sum+overflow)); trials=0; } while(trials != 1 ); } }
PS sorry if this is on the wrong section!Last edited by Simon4360; 03-04-2013 at 12:24 PM.
- 03-04-2013, 12:44 PM #2
Member
- Join Date
- Feb 2013
- Location
- Islamabad, Pakistan
- Posts
- 25
- Rep Power
- 0
Re: Calculating Pi
one advice why dont you run your loop n<trials..... it will execute your program efficiently .Java Code:for (int n =0; n<=trials-1; n++)
Secondly i think do terminate your while loop
Ask user to press 1 to continue or 2 to terminate
On 1 program should simply work
On 2 program should terminate
Coz you are always doing
It will cause program to run infinitely.Java Code:trials=0; }While(trials!=1);
Thanks
- 03-04-2013, 12:55 PM #3
Moderator
- Join Date
- Apr 2009
- Posts
- 10,438
- Rep Power
- 16
Re: Calculating Pi
Print out the value of 'trials' just before the for loop.
I don't spot where it could be adding previous trials values.
Ah, it's not trials that's the problem...you don't reset any of your other variables (sum, overflow, nextX, nextY).
The easiest way to avoid this is to declare your variables in the narrowest scope possible, in this case those 4 should be declared inside the while loop.Please do not ask for code as refusal often offends.
- 03-04-2013, 06:22 PM #4
Member
- Join Date
- Mar 2013
- Posts
- 2
- Rep Power
- 0
Similar Threads
-
calculating the mean
By jimbao in forum New To JavaReplies: 8Last Post: 12-14-2012, 01:40 AM -
Calculating percent
By Dankaru in forum New To JavaReplies: 3Last Post: 11-24-2012, 09:04 PM -
need help with calculating something
By mikec420 in forum New To JavaReplies: 13Last Post: 09-29-2011, 09:14 PM -
Help in calculating time different!
By rocky86 in forum New To JavaReplies: 6Last Post: 10-11-2010, 04:18 PM -
calculating with dates
By hannes in forum New To JavaReplies: 1Last Post: 01-14-2010, 08:22 PM


LinkBack URL
About LinkBacks
Reply With Quote
Bookmarks