Question: #include #define MAXN 100 // max characters in a group/concert name #define MAXG 50 // max concerts/groups #define MAXC 4 // max categories char group

#include

#define MAXN 100 // max characters in a group/concert name

#define MAXG 50 // max concerts/groups

#define MAXC 4 // max categories

char group [MAXG][MAXN];

int fans [MAXG][MAXC];

float prices [MAXC];

float sales [MAXG];

float total_sales = 0;

int count = 0;

void printArray () {

printf ("%15s%5s%5s%5s%5s%10s ",

"Concert", "s1", "s2", "s3", "s4", "Sales");

for (int i = 0; i < count; i++) {

printf ("%15s", group [i]);

for (int j = 0; j < MAXC; j++) {

printf ("%5d", fans[i][j]);

} // end for each category

printf ("%10.2f ", sales [i]);

} // end for each group

} // end function printArray

void computeSales () {

for (int i = 0; i < count; i++) {

sales [i] = 0;

for (int j = 0; j < MAXC; j++) {

sales [i] += prices [j] * fans [i][j];

} // end for each category

} // end for each group

} // end function computeSales

// **************FUNCTION ADDED ******************

void computeTotalSales () {

for (int i = 0; i < count; i++) {

total_sales+=sales[i];

}//end for each group

}

// *******************************************

void switchRows (int m, int n) {

char tc;

int ti;

float v;

// printf ("Switching %d with %d ", m, n);

for (int i = 0; i < MAXN; i++) {

tc = group [m][i];

group [m][i] = group [n][i];

group [n][i] = tc;

} // end for each character in a group name

for (int i = 0; i < MAXC; i++) {

ti = fans [m][i];

fans [m][i] = fans [n][i];

fans [n][i] = ti;

} // end for each fan category

v = sales [m];

sales [m] = sales [n];

sales [n] = v;

} // end switch

int findMinSales (int m) {

float min = sales [m];

int target = m;

for (int i = m+1; i < count; i++)

if (sales [i] < min) {

min = sales [i];

target = i;

} // end new max found

return target;

} // end function findMinSales

void sortBySales () {

int target;

for (int i = 0; i < count; i++) {

target = findMinSales (i);

if (target > i)

switchRows (i, target);

} // for each concert

} // end function sortBySales

void getData () {

// for (int i = 0; i < MAXG; i++) sales [i] = 0;

printf ("Enter ticket prices in each of %d cateogories: ", MAXC);

for (int i = 0; i < MAXC; i++)

scanf ("%f", &prices [i]);

printf ("-- Enter group and fans in %d categories ", MAXC);

printf (" . to finish entries: ");

for (int i = 0; i < MAXG; i++) {

scanf ("%s", group[i]);

if (group [i][0] == '.')

break;

count++;

for (int j = 0; j < MAXC; j++)

scanf ("%d", &fans[i][j]);

} // end for each group

} // end function getData

int main(void) {

getData ();

computeSales ();

printArray ();

printf (" --- Sorted --- ");

sortBySales ();

printArray ();

//********* calling function to compute total sales ,

// **********then display the total sales *******************

computeTotalSales ();

printf("Total sales: %10.2f ",total_sales);

// *************************************************************

printf("... bye ... ");

return 0;

}

Try using different inputs: a. What changes would you suggest to handle larger, more realistic numbers? b. What happens if any of the numbers, such as the ticket prices, are negative? c. What are your recommendations concerning negative input values?

7. What changes should be made to the code if the customer wished to sort on the number of fans in category 1, the first of the three (or four) categories? Make those changes, test your code and confirm that it is working correctly.

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!