// Programmer: Jim Turner
// Course:     CS 252
// Professor:  Dr. Adams
// Date:       10/19/2004  
// Assignment Name or Number: Assigment # 12 
// Java Class Name:  GeometricRegression

import java.io.*;
public class GeometricRegression
{
   
   public static void main(String [] args)
	
	{
	   
		InputStreamReader myStreamReader; //attribute for input stream reader
		BufferedReader myReader;         //attribute for a buffered reader		
				
		myStreamReader = new InputStreamReader(System.in);
		myReader = new BufferedReader(myStreamReader);

	   double a, n, r,itotal,ftotal,power;
			
		String myData;  //holds user input
		itotal = 0;
		ftotal = 0;
		a = 0;
		r = 0;
		n = 0;

		while (!(a > 0  || r > 0 || n > 0))//do
		{
		try
		{
	
		   //get input from user;			
		System.out.print("Enter an initial term:\t ");	
		myData = myReader.readLine();	
		a = Integer.parseInt(myData);
		
		System.out.print("Enter a common ratio:\t ");	
		myData = myReader.readLine();	
		r = Integer.parseInt(myData);
		
		System.out.print("Enter the number of terms:\t ");	
		myData = myReader.readLine();	
		n = Integer.parseInt(myData);
		} //end try

	      catch (NumberFormatException nfe)
		   {
		       System.out.println("You entered an invalid number, please enter an integer.");	
			 		  
		   } //end NumberFormatException catch block
	      catch (IOException IOe) //catch IO error
	  		{
		       System.out.println ("There was a problem with the input..aborting");
			    System.exit (1);
		   }//end catch
		
			
		}//while (not(a > 0 or r > 0 or n > 0));
		
			
	      //echo user input 
		System.out.println();
		System.out.println("You entered:");	 		
		System.out.println("Intial Term =\t " + a);
		System.out.println("Number of Terms =\t" + n);
		System.out.println("Common Ratio =\t " + r);
		System.out.println();
		
	      //calculate geometric regression using formula
      power = Math.pow(r,n);
		ftotal = (a - (a * power))/(1-r);
		
				
		System.out.println("Total Using Formula =  " + ftotal);
      System.out.println();
			
		  //calculate geometric regression using iteration		
		itotal = a;  //need to add a to total
		n = n-1;     //Set n to 1 less than input
		while (n != 0)
		{
		   //power = 0;
		   power = Math.pow(r,n);
			itotal = itotal + (a * power);		      	
		   n--;			
		
		}//end while
							
	  System.out.println("Total Using Iteration =  " + itotal);	
	  
	  
	  
	 	
	}

}
