//Devin Scheu CS1A Chapter 11, P. 645, #3
//
/**************************************************************
*
* DISPLAY CORPORATE SALES DATA
* ____________________________________________________________
* This program calculates and displays total and average
* quarterly sales for four company divisions.
* ____________________________________________________________
* INPUT
* division1 : Sales data for the East division
* division2 : Sales data for the West division
* division3 : Sales data for the North division
* division4 : Sales data for the South division
*
* OUTPUT
* salesSummary : The formatted display of sales data for each division
*
**************************************************************/
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
struct DivisionData {
string divisionName;
double firstQuarter;
double secondQuarter;
double thirdQuarter;
double fourthQuarter;
double totalAnnualSales;
double averageQuarterlySales;
};
// Function to calculate and display division sales
void calculateAndDisplayDivision(DivisionData& division) {
division.totalAnnualSales = division.firstQuarter + division.secondQuarter +
division.thirdQuarter + division.fourthQuarter;
division.averageQuarterlySales = division.totalAnnualSales / 4.0;
cout << left << setw(25) << "Division:" << right << division.divisionName << endl;
cout << left << setw(25) << "First Quarter:" << right << "$" << fixed << setprecision(2) << division.firstQuarter << endl;
cout << left << setw(25) << "Second Quarter:" << right << "$" << fixed << setprecision(2) << division.secondQuarter << endl;
cout << left << setw(25) << "Third Quarter:" << right << "$" << fixed << setprecision(2) << division.thirdQuarter << endl;
cout << left << setw(25) << "Fourth Quarter:" << right << "$" << fixed << setprecision(2) << division.fourthQuarter << endl;
cout << left << setw(25) << "Total Annual Sales:" << right << "$" << fixed << setprecision(2) << division.totalAnnualSales << endl;
cout << left << setw(25) << "Average Quarterly Sales:" << right << "$" << fixed << setprecision(2) << division.averageQuarterlySales << endl;
cout << endl;
}
int main () {
//Variable Declarations
const int NUM_DIVISIONS = 4; //OUTPUT - Number of divisions
DivisionData divisions[NUM_DIVISIONS] = {{"East", 0, 0, 0, 0}, {"West", 0, 0, 0, 0},
{"North", 0, 0, 0, 0}, {"South", 0, 0, 0, 0}};
string salesSummary; //OUTPUT - The formatted display of sales data for each division
const string quarterNames[4] = {"first", "second", "third", "fourth"};
//Prompt for Input with Loop
for (int div = 0; div < NUM_DIVISIONS; div++) {
for (int q = 0; q < 4; q++) {
cout << "Enter " << quarterNames[q] << " quarter sales for " << divisions[div].divisionName << ": $";
cin >> divisions[div].firstQuarter;
while (divisions[div].firstQuarter < 0) {
cout << "\nError: Please enter a non-negative amount: $";
cin >> divisions[div].firstQuarter;
}
switch(q) {
case 0: divisions[div].firstQuarter = divisions[div].firstQuarter; break;
case 1: divisions[div].secondQuarter = divisions[div].firstQuarter; break;
case 2: divisions[div].thirdQuarter = divisions[div].firstQuarter; break;
case 3: divisions[div].fourthQuarter = divisions[div].firstQuarter; break;
}
cout << divisions[div].firstQuarter << endl;
}
}
//Separator and Output Section
cout << "-------------------------------------------------------" << endl;
cout << "OUTPUT:" << endl;
//Display Sales Data
for (int div = 0; div < NUM_DIVISIONS; div++) {
cout << divisions[div].divisionName << " Division Details:" << endl;
calculateAndDisplayDivision(divisions[div]);
}
} //end of main()