Answered You can hire a professional tutor to get the answer.
Enhance the program to allow the user to enter 4 categories. Explain the changes you made to the code, and appropriate test data files. #include...
3. Enhance the program to allow the user to enter 4 categories. Explain the changes you made to the code, and appropriate test data files.
#include <stdio.h>
#define MAXN 100 // max characters in a group/concert name
#define MAXG 5 // max concerts/groups
#define MAXC 3 // max categories
char group [MAXG][MAXN];
int fans [MAXG][MAXC];
float prices [MAXC];
float sales [MAXG];
int count = 0;
void printArray () {
printf ("%15s%5s%5s%5s%10sn",
"Concert", "s1", "s2", "s3", "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.2fn", 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
void switchRows (int m, int n) {
char tc;
int ti;
float v;
// printf ("Switching %d with %dn", 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 () {
int i, j;
// for (int i = 0; i < MAXG; i++) sales [i] = 0;
printf ("Enter ticket prices in each of %d cateogories: ", MAXC);
printf("n begin entry below ...");
for (int i = 0; i < MAXC; i++){
printf("n enter ticket price %d, of %d ",i+1,MAXC);
scanf ("%f", &prices [i]);
}
printf ("-- Enter group name and ticket sales in each of the %d categoriesn", MAXC);
printf (" . to finish entries:n");
for (int i = 0; i < MAXG; i++) {
printf("n Enter group name ");
scanf ("%s", &group[i]);
if (group [i][0] == '.')
break;
count++;
for (int j = 0; j < MAXC; j++){
printf ("n Enter the number of fans buying at ticket price %d ",j+1);
scanf ("%d", &fans[i][j]);
}
} // end for each group
} // end function getData
int main(void) {
getData ();
computeSales ();
printArray ();
printf ("n --- Sorted ---n");
sortBySales ();
printArray ();
printf("... bye ...n");
return 0;
}