/* Peter Cline, June 20, CISC105
   Fun with arrays and for loops
	Adding functions to the mix
	Finding average/max/min of an array of temperatures
*/

#include <stdio.h>
#define NUM_DAYS 10
#define SENTINEL -1

void getTemperatures(double temperatures[]);
void printTemperatures(double temperatures[]);
double getAverage(double temperatures[]);
double getMax(double temperatures[]);

int main()
{
  double temps[NUM_DAYS] = {88.5, 60, 32, 90.7, 67.8,
                            75.3, 55.2, 85.3, 88.8, 77.7};
  int userInput;

  do
    {
      printf("Menu:\n");
      printf(" 1) Enter new temperatures\n");
      printf(" 2) Print temperatures to screen\n");
      printf(" 3) Print average of temperatures\n");
      printf(" 4) Print maximum temperature\n");
      printf("Or enter -1 to exit.\n");
      printf("Your choice? ");
      scanf("%d", &userInput);
      
      switch (userInput)
	{
	case 1:
	  getTemperatures(temps);
	  break;
	case 2:
	  printTemperatures(temps);
	  break;
	case 3:
	  printf("Average is %lf\n", getAverage(temps));
	  break;
	case 4:
  	  printf("Max temp is: %lf\n", getMax(temps));
	  break;
	case SENTINEL:
	  printf("Have a nice day!\n");
	  break;
	default: 
	  printf("Try again.\n");
	}
    } while (userInput != SENTINEL);

  return 0;
}

// read in the temperatures from the user
void getTemperatures(double temperatures[])
{
  int day;

  printf("Enter %d temperatures:\n", NUM_DAYS);
  for (day = 0; day < NUM_DAYS; day++)
    {
      printf(" > ");
      scanf("%lf", &temperatures[day]);
    }
}

// printing out those ten temperatures
void printTemperatures(double temperatures[]) 
{
  int day;
 
  printf("Here are your temperatures:\n");
  for (day = 0; day < NUM_DAYS; day++)
    printf("Day %d had temperature %lf\n", day+1, temperatures[day]);
}

// calculate the average
double getAverage(double temperatures[])
{
  int day;
  double sum = 0;
  double average;
 
  for (day = 0; day < NUM_DAYS; day++)
    sum += temperatures[day];
  average = sum / NUM_DAYS;
  return average;
}

// calculate the maximum temperature
double getMax(double temperatures[])
{
  int day;
  double max;
 
  max = temperatures[0];
  for (day = 0; day < NUM_DAYS; day++)
    if (max < temperatures[day])
      max = temperatures[day];

	return max;
}
