Multidimensional Array Niggles!!!
My program is almost complete!
But why does it keep totaling the fifth product's total sales calculation as 32?
Please find my source code below for your perusal:
Code:
#include <iostream>
#include <iomanip>
using namespace std;
const int employees = 4;
const int items = 5;
int validateItemNumber(); // enure only numbers within the acceptable range are passed
int validateEmployeeNumber(); // enure only numbers within the acceptable range are passed
void zeroArray( int[][items], int ); // wipe all data from the array
void sale( int[][items], int, int ); // increment sale counter dependent on item sold
int main()
{
int sales[employees][items];
int employeeNumber = 0;
int salesPerEmployee = 0;
int salesPerProduct = 0;
zeroArray( sales, employees);
while ( employeeNumber != -1 )
{
employeeNumber = validateEmployeeNumber();
if ( employeeNumber > -1 )
{
sale( sales, employees, employeeNumber );
}
}
cout << "\nEmployee" << setw( 8 ) << "Item 1" << setw( 8 ) << "Item 2" << setw( 8 ) << "Item 3" << setw( 8 ) << "Item 4" << setw( 8 ) << "Item 5" << setw( 8 ) << "Employee sales" << endl;
for ( int i = 0; i < employees; i++ )
{
cout << setw( 4 ) << i + 1;
for ( int j = 0; j < items; j++ )
{
cout << setw( 8 ) << sales[i][j];
salesPerProduct += sales[i][j];
}
cout << setw( 12 ) << salesPerProduct;
salesPerProduct = 0;
cout << "\n";
}
cout << "Total ";
for ( int i = 0; i < items; i++ )
{
for ( int j = 0; j < employees; j++ )
{
salesPerEmployee += sales[i][j];
}
cout << setw( 8 ) << salesPerEmployee;
salesPerEmployee = 0;
}
} // end main
// enure only numbers within the acceptable range are passed
int validateItemNumber()
{
int a;
cout << "\nWhich item was sold?\nItem no: ";
cin >> a;
while ( a < 1 || a > 5 )
{
cout << "Your input was not recognised!\nWhich item was sold?\nItem no: ";
cin >> a;
}
return a - 1;
} // end function validateItemNumber
// increment sale counter dependent on item sold
void sale( int sales[][items], int employees, int employeeNumber )
{
int itemNumber;
itemNumber = validateItemNumber();
sales[employeeNumber][itemNumber]++;
} // end function sale
// wipe all data from the array
void zeroArray( int sales[][items], int employees )
{
for ( int i = 0; i < employees; i++ )
{
for ( int j = 0; j < items; j++ )
{
sales[i][j] = 0;
}
}
} // end function zeroArray
// enure only numbers within the acceptable range are passed
int validateEmployeeNumber()
{
int empNo;
cout << "\nEnter employee number ( or 0 to show summary ): ";
cin >> empNo;
while ( empNo < 0 || empNo > 4 )
{
cout << "Your input was not recognised!\nEnter employee number ( or 0 to show summary ): ";
cin >> empNo;
}
return empNo - 1;
} // end function validateEmployeeNumber