// Monkey Business.
#include <iostream>
#include <iomanip>
using namespace std;
// constants
const int MONKEYS = 3;
const int DAYS = 7;
// function prototype.
void getFood(double arr[][DAYS], int rows);
void avgFood(double arr[][DAYS], int rows);
void leastAmount(double arr[][DAYS], int rows);
void greatestAmount(double arr[][DAYS], int rows);
int main()
{
// declarations.
double food[MONKEYS][DAYS];
// header
cout << "\tMonkey Business :::\n\n";
cout << "Enter the food each monkey eats (in pounds) during the week.\n\n";
// get food.
getFood(food, MONKEYS);
cout << "Report:\n";
cout << "----------------------\n";
// get average.
avgFood(food, MONKEYS);
// get least amount in that week.
leastAmount(food, MONKEYS);
// get greatest amount in that week.
greatestAmount(food, MONKEYS);
// End program.
return 0;
}
//*******************************************************************
// getFood function
// Takes three arguments. It asks the user to enter the food in
// pounds that each monkey eats, for every day in a single week.
//*******************************************************************
void getFood(double arr[][DAYS], int rows)
{
for (int nRows = 0; nRows < rows; nRows++)
{
cout << "Monkey " << (nRows + 1) << "\n";
for (int nCols = 0; nCols < DAYS; nCols++)
{
cout << " Day " << (nCols + 1) << ": ";
cin >> arr[nRows][nCols];
// validate.
while (arr[nRows][nCols] < 0)
{
cout << "ERROR: food cannot be lower than 0, try again: ";
cin >> arr[nRows][nCols];
}
}
// separate the fields.
cout << endl;
}
}
//*******************************************************************
// avgFood function
// Gets the average food each monkey eats during the week. It
// will then show a message on the screen.
//*******************************************************************
void avgFood(double arr[][DAYS], int rows)
{
double total = 0; // accumulator.
cout << "Average food a day for " << MONKEYS;
cout << " monkeys: ";
for (int nRows = 0; nRows < rows; nRows++)
{
for (int nCols = 0; nCols < DAYS; nCols++)
total += arr[nRows][nCols];
}
// set formatting.
cout << fixed << setprecision(2);
cout << (total / MONKEYS) << " pounds.\n" << endl;
}
//*******************************************************************
// leastAmount function
// Get from each monkey the least amount of food eaten
// during the week.
//*******************************************************************
void leastAmount(double arr[][DAYS], int rows)
{
for (int nRows = 0; nRows < rows; nRows++)
{
double least = arr[0][0];
int day = 0; // accumulator.
for (int nCols = 0; nCols < DAYS; nCols++)
{
if (arr[nRows][nCols] < least)
{
least = arr[nRows][nCols];
day += (nCols + 1);
}
}
cout << "On day " << day;
cout << " monkey " << (nRows + 1);
cout << " ate the least amount of food.\n";
}
// empty line
cout << endl;
}
//*******************************************************************
// greatestAmount function
//
//*******************************************************************
void greatestAmount(double arr[][DAYS], int rows)
{
for (int nRows = 0; nRows < rows; nRows++)
{
double greatest = arr[0][0];
int day = 0; // accumulator.
for (int nCols = 0; nCols < DAYS; nCols++)
{
if (arr[nRows][nCols] > greatest)
{
greatest = arr[nRows][nCols];
day += (nCols + 1);
}
}
cout << "On day " << day;
cout << " monkey " << (nRows + 1);
cout << " ate the greatest amount of food.\n";
}
// empty line
cout << endl;
}