/****************************************************************************** * Name: Reference Solution * NetID: ref * Precept: P00 * * Partner Name: N/A * Partner NetID: N/A * Partner Precept: N/A * * Description: Reads, prints, and plots stock prices. * * Computes 3-day simple moving average starting on the 3rd * day. Plots and prints stock price data and moving average. * * Example: java-introcs MovingAverage3 < TSLA.txt * ******************************************************************************/ public class MovingAverage3 { public static void main(String[] args) { // Number of trading days int n = StdIn.readInt(); int DAYS = 3; // parallel arrays String[] date = new String[n]; double[] open = new double[n]; double[] high = new double[n]; double[] low = new double[n]; double[] close = new double[n]; double[] ma = new double[n]; // Read in daily prices for (int i = 0; i < n; i++) { date[i] = StdIn.readString(); open[i] = StdIn.readDouble(); high[i] = StdIn.readDouble(); low[i] = StdIn.readDouble(); close[i] = StdIn.readDouble(); // compute moving average if needed if (i >= DAYS - 1) { // sum of previous 3 days double sum = 0; for (int j = i; j > i - DAYS; j--) { sum += close[j]; } // compute moving average ma[i] = sum / DAYS; } } // Plot stock price data StockPlot.plot(open, high, low, close, ma, DAYS); // Output the information StdOut.println(n); for (int i = 0; i < n; i++) { StdOut.printf("%s %.2f %.2f %.2f %.2f", date[i], open[i], high[i], low[i], close[i]); if (i >= DAYS - 1) StdOut.printf(" %.2f", ma[i]); StdOut.println(); } } }