#include #define MAXN 100 // max characters in a group/concert name#define MAXG 50 // max concerts/groups#define MAXC 4 // max categorieschar group [MAXG][MAXN];int fans [MAXG][MAXC];float prices [MAXC];float sales [MAXG];int count = 0;void printArray () {printf (%15s%5s%5s%5s%5s%10sn,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 categoryprintf (‘%10.2fn’, sales [i]);} // end for each group} // end function printArrayvoid 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 computeSalesvoid 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 namefor (int i = 0; i < MAXC; i++) {ti = fans [m][i];fans [m][i] = fans [n][i];fans [n][i] = ti;} // end for each fan categoryv = sales [m];sales [m] = sales [n];sales [n] = v;} // end switchint 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 foundreturn target;} // end function findMinSalesvoid sortBySales () {int target;for (int i = 0; i < count; i++) {target = findMinSales (i);if (target > i)switchRows (i, target);} // for each concert} // end function sortBySalesvoid 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 categoriesn’, MAXC);printf (‘ . to finish entries:n’);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 getDataint main (void){getData ();computeSales ();printArray ();printf (‘n — Sorted —n’);sortBySales ();printArray ();printf(‘… bye …n’);return 0;}