#include <stdio.h>
#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\n", "Concert", "s1", "s2", "s3", "s4", "Sales");
for (int i = 0; i < count; i++) {
for (int j = 0; j < MAXC; j++) {
} // end for each category
printf ("%10.2f\n", 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 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\n", 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\n", MAXC
); printf (" . to finish entries:\n"); for (int i = 0; i < MAXG; 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 ("\n --- Sorted ---\n"); sortBySales ();
printArray ();
//********* calling function to compute total sales ,
// **********then display the total sales *******************
computeTotalSales ();
printf("Total sales: %10.2f\n",total_sales
); // *************************************************************
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIE1BWE4gMTAwIC8vIG1heCBjaGFyYWN0ZXJzIGluIGEgZ3JvdXAvY29uY2VydCBuYW1lCiNkZWZpbmUgTUFYRyA1MCAvLyBtYXggY29uY2VydHMvZ3JvdXBzCiNkZWZpbmUgTUFYQyA0IC8vIG1heCBjYXRlZ29yaWVzCgoKY2hhciBncm91cCBbTUFYR11bTUFYTl07CmludCBmYW5zIFtNQVhHXVtNQVhDXTsKZmxvYXQgcHJpY2VzIFtNQVhDXTsKZmxvYXQgc2FsZXMgW01BWEddOwpmbG9hdCB0b3RhbF9zYWxlcyA9IDA7CmludCBjb3VudCA9IDA7Cgp2b2lkIHByaW50QXJyYXkgKCkgewoKcHJpbnRmICgiJTE1cyU1cyU1cyU1cyU1cyUxMHNcbiIsCiJDb25jZXJ0IiwgInMxIiwgInMyIiwgInMzIiwgInM0IiwgIlNhbGVzIik7CgoKZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CnByaW50ZiAoIiUxNXMiLCBncm91cCBbaV0pOwpmb3IgKGludCBqID0gMDsgaiA8IE1BWEM7IGorKykgewpwcmludGYgKCIlNWQiLCBmYW5zW2ldW2pdKTsKfSAvLyBlbmQgZm9yIGVhY2ggY2F0ZWdvcnkKcHJpbnRmICgiJTEwLjJmXG4iLCBzYWxlcyBbaV0pOwp9IC8vIGVuZCBmb3IgZWFjaCBncm91cAp9IC8vIGVuZCBmdW5jdGlvbiBwcmludEFycmF5Cgp2b2lkIGNvbXB1dGVTYWxlcyAoKSB7CmZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewpzYWxlcyBbaV0gPSAwOwpmb3IgKGludCBqID0gMDsgaiA8IE1BWEM7IGorKykgewpzYWxlcyBbaV0gKz0gcHJpY2VzIFtqXSAqIGZhbnMgW2ldW2pdOwp9IC8vIGVuZCBmb3IgZWFjaCBjYXRlZ29yeQp9IC8vIGVuZCBmb3IgZWFjaCBncm91cAp9IC8vIGVuZCBmdW5jdGlvbiBjb21wdXRlU2FsZXMKCnZvaWQgY29tcHV0ZVRvdGFsU2FsZXMgKCkgewpmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKdG90YWxfc2FsZXMrPXNhbGVzW2ldOwp9Ly9lbmQgZm9yIGVhY2ggZ3JvdXAKCn0KCnZvaWQgc3dpdGNoUm93cyAoaW50IG0sIGludCBuKSB7CmNoYXIgdGM7CmludCB0aTsKZmxvYXQgdjsKLy8gcHJpbnRmICgiU3dpdGNoaW5nICVkIHdpdGggJWRcbiIsIG0sIG4pOwpmb3IgKGludCBpID0gMDsgaSA8IE1BWE47IGkrKykgewp0YyA9IGdyb3VwIFttXVtpXTsKZ3JvdXAgW21dW2ldID0gZ3JvdXAgW25dW2ldOwpncm91cCBbbl1baV0gPSB0YzsKfSAvLyBlbmQgZm9yIGVhY2ggY2hhcmFjdGVyIGluIGEgZ3JvdXAgbmFtZQpmb3IgKGludCBpID0gMDsgaSA8IE1BWEM7IGkrKykgewp0aSA9IGZhbnMgW21dW2ldOwpmYW5zIFttXVtpXSA9IGZhbnMgW25dW2ldOwpmYW5zIFtuXVtpXSA9IHRpOwp9IC8vIGVuZCBmb3IgZWFjaCBmYW4gY2F0ZWdvcnkKdiA9IHNhbGVzIFttXTsKc2FsZXMgW21dID0gc2FsZXMgW25dOwpzYWxlcyBbbl0gPSB2Owp9IC8vIGVuZCBzd2l0Y2gKCmludCBmaW5kTWluU2FsZXMgKGludCBtKSB7CmZsb2F0IG1pbiA9IHNhbGVzIFttXTsKaW50IHRhcmdldCA9IG07CmZvciAoaW50IGkgPSBtKzE7IGkgPCBjb3VudDsgaSsrKQppZiAoc2FsZXMgW2ldIDwgbWluKSB7Cm1pbiA9IHNhbGVzIFtpXTsKdGFyZ2V0ID0gaTsKfSAvLyBlbmQgbmV3IG1heCBmb3VuZApyZXR1cm4gdGFyZ2V0Owp9IC8vIGVuZCBmdW5jdGlvbiBmaW5kTWluU2FsZXMKCnZvaWQgc29ydEJ5U2FsZXMgKCkgewppbnQgdGFyZ2V0Owpmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKdGFyZ2V0ID0gZmluZE1pblNhbGVzIChpKTsKaWYgKHRhcmdldCA+IGkpCnN3aXRjaFJvd3MgKGksIHRhcmdldCk7Cn0gLy8gZm9yIGVhY2ggY29uY2VydAp9IC8vIGVuZCBmdW5jdGlvbiBzb3J0QnlTYWxlcwoKdm9pZCBnZXREYXRhICgpIHsKLy8gZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhHOyBpKyspIHNhbGVzIFtpXSA9IDA7CnByaW50ZiAoIkVudGVyIHRpY2tldCBwcmljZXMgaW4gZWFjaCBvZiAlZCBjYXRlb2dvcmllczogIiwgTUFYQyk7CmZvciAoaW50IGkgPSAwOyBpIDwgTUFYQzsgaSsrKQpzY2FuZiAoIiVmIiwgJnByaWNlcyBbaV0pOwpwcmludGYgKCItLSBFbnRlciBncm91cCBhbmQgZmFucyBpbiAlZCBjYXRlZ29yaWVzXG4iLCBNQVhDKTsKcHJpbnRmICgiIC4gdG8gZmluaXNoIGVudHJpZXM6XG4iKTsKZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhHOyBpKyspIHsKc2NhbmYgKCIlcyIsICZncm91cFtpXSk7CmlmIChncm91cCBbaV1bMF0gPT0gJy4nKQpicmVhazsKY291bnQrKzsKZm9yIChpbnQgaiA9IDA7IGogPCBNQVhDOyBqKyspCnNjYW5mICgiJWQiLCAmZmFuc1tpXVtqXSk7Cn0gLy8gZW5kIGZvciBlYWNoIGdyb3VwCn0gLy8gZW5kIGZ1bmN0aW9uIGdldERhdGEKCmludCBtYWluKHZvaWQpIHsKZ2V0RGF0YSAoKTsKY29tcHV0ZVNhbGVzICgpOwpwcmludEFycmF5ICgpOwpwcmludGYgKCJcbiAtLS0gU29ydGVkIC0tLVxuIik7CnNvcnRCeVNhbGVzICgpOwpwcmludEFycmF5ICgpOwoKLy8qKioqKioqKiogY2FsbGluZyBmdW5jdGlvbiB0byBjb21wdXRlIHRvdGFsIHNhbGVzICwKLy8gKioqKioqKioqKnRoZW4gZGlzcGxheSB0aGUgdG90YWwgc2FsZXMgKioqKioqKioqKioqKioqKioqKgpjb21wdXRlVG90YWxTYWxlcyAoKTsKcHJpbnRmKCJUb3RhbCBzYWxlczogJTEwLjJmXG4iLHRvdGFsX3NhbGVzKTsKLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoKcHJpbnRmKCIuLi4gYnllIC4uLlxuIik7CnJldHVybiAwOwp9