/****************************************************************************
* Name: Donna Gabai
* NetID: dgabai
* Precept: P99
* Spring14 Exam 1
*
* Description: Simulates how fast the snow will melt
* based on how much salt is used and temp
* Dependencies: StdIn, StdOut
* ***************************************************************************/
public class SnowMelt {
// using current snow, temperature and salt solution
// how much snow will melt?
public static double meltage(double currSnow, int temp, int salt) {
double result = Math.pow(1 + currSnow, (temp - 32 + 2*salt)/18.0);
result = Math.min(currSnow, result);
return result;
}
// formatted printing of a double[] array
public static void printArray(double[] arr) {
int N = arr.length;
for (int i = 0; i < N; i++)
StdOut.printf("%8.3f", arr[i]);
// new line after all entries printed
StdOut.println();
}
// Part 2B: input data file from standard input
// input salt solution ints from command-line
// output remaining snow for each day for each salt solution
public static void main(String[] args) {
// store salt for scenarios
int N = args.length;
int[] salt = new int[N];
for (int i = 0; i < N; i++)
salt[i] = Integer.parseInt(args[i]);
// array of snow left on ground for each scenario
double[] snowLeft = new double[N];
// input snow in inches and temp in degrees F for each day
while (!StdIn.isEmpty()) {
// read data from standard input
double newSnow = StdIn.readDouble();
int temp = StdIn.readInt();
// compute meltage for one day with each salt value
for (int i = 0; i < N; i++) {
snowLeft[i] = snowLeft[i] + newSnow;
double melt = meltage(snowLeft[i], temp, salt[i]);
// how much snow left after the melting?
snowLeft[i] = snowLeft[i] - melt;
}
printArray(snowLeft);
}
}
}