Answer:
The C++ code is given below with appropriate comments
Explanation:
#include "stdafx.h"
//Header file section
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
//Function prototypes
double rainfallTotal(double[], int);
double averageMonthlyRainfall(double[], int);
double highestAmountRainfall(double[], int, int &);
double lowestAmountRainfall(double[], int, int &);
int main()
{
//Initialize variables
const int ALL_MONTHS = 12;
int highIndex = 0;
int lowIndex = 0;
//Declare variables
double totalRf;
double averageRf;
double mostRf;
double leastRf;
double monthlyRf[ALL_MONTHS];
string monthName[ALL_MONTHS] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" };
for (int i = 0; i < ALL_MONTHS; i++)
{
cout << "Enter rainfall for " << monthName[i] << ": ";
cin >> monthlyRf[i];
// Check the input as negative numbers
//for monthly rainfall
while (monthlyRf[i] < 0)
{
cout << "Invalid data (negative rainfall) " << endl;
cout << "Retry the rainfall in " << monthName[i] << ": ";
cin >> monthlyRf[i];
}
}
//Call the methods
totalRf = rainfallTotal(monthlyRf, ALL_MONTHS);
averageRf = averageMonthlyRainfall(monthlyRf, ALL_MONTHS);
mostRf = highestAmountRainfall(monthlyRf, ALL_MONTHS, highIndex);
leastRf = lowestAmountRainfall(monthlyRf, ALL_MONTHS, lowIndex);
//Display output
cout << fixed << showpoint << setprecision(2) << endl;
cout << "Total rainfall: " << totalRf << endl;
cout << "Average rainfall: " << averageRf << endl;
cout << "Least rainfall in " << monthName[lowIndex] <<endl;
cout << "Most rainfall in " << monthName[highIndex] <<endl;
system("pause");
return 0;
}
//Method definition of rainfallTotal
double rainfallTotal(double totalRainfall[], int n)
{
double total = 0;
for (int i = 0; i < n; i++)
total += totalRainfall[i];
return total;
}
//Method definition of averageMonthlyRainfall
double averageMonthlyRainfall(double totalRainfall[], int n)
{
double average = 0.0;
double total = 0;
for (int i = 0; i < n; i++)
total += totalRainfall[i];
average = total / n;
return average;
}
//Method definition of lowestAmountRainfall
double lowestAmountRainfall(double totalRainfall[], int n, int &monthIndex)
{
double least;
int i = 0;
least = totalRainfall[i];
while (i < n)
{
if (totalRainfall[i] < least)
{
least = totalRainfall[i];
monthIndex = i;
}
i++;
}
return least;
}
//Method definition of highestAmountRainfall
double highestAmountRainfall(double totalRainfall[], int n, int &monthIndex)
{
double high;
int i = 0;
high = totalRainfall[i];
while (i < n)
{
if (totalRainfall[i] > high)
{
high = totalRainfall[i];
monthIndex = i;
}
i++;
}
return high;
}