Question #33908

Use a one-dimensional array to solve the following problem. A company pays its salespeople on a commission basis. The salespeople each receive $200 per week plus 9 percent of their gross sales for that week. For example, a salesperson who grosses $5000 in sales in a week receives $200 plus 9 percent of $5000, or a total of $650. Write a program (using an array of counters) that determines how many of the salespeople earned salaries in each of the following ranges (assume that each salesperson’s salary is truncated to an integer amount);
a) $200-299
b) $300-399
c) $400-499
d) $500-599
e) $600-699
f) $700-799
g) $800-899
h) $900-999
i) $1000 and over

Expert's answer

#include <iostream>
#include <cstdio>


using namespace std;


/* A number of salespeople in the company */
static const int SALESPERSON_COUNT = 25;


int main()
{
/* An array of salespeople earned salaries */
int salaries[SALESPERSON_COUNT] = { 204, 733, 806, 967, 262,
1075, 1060, 1072, 255, 462,
995, 564, 886, 924, 201,
884, 938, 1033, 264, 1026,
215, 238, 348, 644, 563};
/* An array of counters showing how many salesperson salaries
* are in each of the nine ranges */
int counters[9] = {0};
int index;

for (int k = 0; k < SALESPERSON_COUNT; k++)
{
index = (salaries[k] - 200) / 100;//get counter index for a salary range
counters[index]++;
}

/* Output salary list */
cout << "Salespeople earned salaries:" << endl;
for (int k = 0; k < SALESPERSON_COUNT; k++)
cout << " " << salaries[k];
cout << endl << endl;

/* Display the array of counters */
char buf[64];
for (int z = 0; z < 8; z++)
{
sprintf(buf, " %c) $%d-%d: ", 'a' + z, 200 + z * 100, 299 + z * 100);
cout << buf << counters[z] << endl;
}
cout << " i) $1000 < " << counters[8];
return 0;
}
LATEST TUTORIALS
APPROVED BY CLIENTS