/* C code
This code will compute the values of the sales ticket sales for concerts
and sort the entries by those values
Developer: Sergio Arispe CMIS102
Date: 10/13/2019 */
#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] ;
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 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 = fans [ m] [ 0 ] ;
int target = m;
for ( int i = m+ 1 ; i < count; i++ )
if ( fans [ i] [ 0 ] < min) {
min = fans [ i] [ 0 ] ;
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
void printWelcome( ) {
printf ( "Hello there!\n My name is Sergio Arispe\n And this program will compute the concert data you input shortly...\n " ) ; }
void totalSales( ) {
double totalSales = 0 ;
for ( int i= 0 ; i< count; i++ ) {
totalSales += sales[ i] ;
}
printf ( "The total sales made were: %f\n " , totalSales
) ; }
int main( void ) {
printWelcome( ) ;
getData ( ) ;
computeSales ( ) ;
printArray ( ) ;
printf ( "\n --- Sorted ---\n " ) ; sortBySales ( ) ;
printArray ( ) ;
totalSales( ) ;
return 0 ;
}
LyogQyBjb2RlClRoaXMgY29kZSB3aWxsIGNvbXB1dGUgdGhlIHZhbHVlcyBvZiB0aGUgc2FsZXMgdGlja2V0IHNhbGVzIGZvciBjb25jZXJ0cwphbmQgc29ydCB0aGUgZW50cmllcyBieSB0aG9zZSB2YWx1ZXMKRGV2ZWxvcGVyOiBTZXJnaW8gQXJpc3BlIENNSVMxMDIKRGF0ZTogMTAvMTMvMjAxOSAqLwoKI2luY2x1ZGUgPHN0ZGlvLmg+CiNkZWZpbmUgTUFYTiAxMDAgLy8gbWF4IGNoYXJhY3RlcnMgaW4gYSBncm91cC9jb25jZXJ0IG5hbWUKI2RlZmluZSBNQVhHIDUwIC8vIG1heCBjb25jZXJ0cy9ncm91cHMKI2RlZmluZSBNQVhDIDQgLy8gbWF4IGNhdGVnb3JpZXMKCmNoYXIgZ3JvdXAgW01BWEddW01BWE5dOwppbnQgZmFucyBbTUFYR11bTUFYQ107CmZsb2F0IHByaWNlcyBbTUFYQ107CmZsb2F0IHNhbGVzIFtNQVhHXTsKaW50IGNvdW50ID0gMDsKCnZvaWQgcHJpbnRBcnJheSAoKSB7CglwcmludGYgKCIlMTVzJTVzJTVzJTVzJTVzJTEwc1xuIiwiQ29uY2VydCIsICJzMSIsICJzMiIsICJzMyIsICJzNCIsICJTYWxlcyIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CgkJcHJpbnRmICgiJTE1cyIsIGdyb3VwIFtpXSk7CgkJZm9yIChpbnQgaiA9IDA7IGogPCBNQVhDOyBqKyspIHsKCQkJcHJpbnRmICgiJTVkIiwgZmFuc1tpXVtqXSk7CgkJfSAvLyBlbmQgZm9yIGVhY2ggY2F0ZWdvcnkKCQlwcmludGYgKCIlMTAuMmZcbiIsIHNhbGVzIFtpXSk7Cgl9IC8vIGVuZCBmb3IgZWFjaCBncm91cAp9IC8vIGVuZCBmdW5jdGlvbiBwcmludEFycmF5Cgp2b2lkIGNvbXB1dGVTYWxlcyAoKSB7Cglmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKCQlzYWxlcyBbaV0gPSAwOwoJCWZvciAoaW50IGogPSAwOyBqIDwgTUFYQzsgaisrKSB7CgkJCXNhbGVzIFtpXSArPSBwcmljZXMgW2pdICogZmFucyBbaV1bal07CgkJfSAvLyBlbmQgZm9yIGVhY2ggY2F0ZWdvcnkKCX0gLy8gZW5kIGZvciBlYWNoIGdyb3VwCn0gLy8gZW5kIGZ1bmN0aW9uIGNvbXB1dGVTYWxlcwoKdm9pZCBzd2l0Y2hSb3dzIChpbnQgbSwgaW50IG4pIHsKCWNoYXIgdGM7CglpbnQgdGk7CglmbG9hdCB2OwoJLy8gcHJpbnRmICgiU3dpdGNoaW5nICVkIHdpdGggJWRcbiIsIG0sIG4pOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhOOyBpKyspIHsKCQl0YyA9IGdyb3VwIFttXVtpXTsKCQlncm91cCBbbV1baV0gPSBncm91cCBbbl1baV07CgkJZ3JvdXAgW25dW2ldID0gdGM7Cgl9IC8vIGVuZCBmb3IgZWFjaCBjaGFyYWN0ZXIgaW4gYSBncm91cCBuYW1lCglmb3IgKGludCBpID0gMDsgaSA8IE1BWEM7IGkrKykgewoJCXRpID0gZmFucyBbbV1baV07CgkJZmFucyBbbV1baV0gPSBmYW5zIFtuXVtpXTsKCQlmYW5zIFtuXVtpXSA9IHRpOwoJfSAvLyBlbmQgZm9yIGVhY2ggZmFuIGNhdGVnb3J5Cgl2ID0gc2FsZXMgW21dOwoJc2FsZXMgW21dID0gc2FsZXMgW25dOwoJc2FsZXMgW25dID0gdjsKfSAvLyBlbmQgc3dpdGNoCgppbnQgZmluZE1pblNhbGVzIChpbnQgbSkgewoJZmxvYXQgbWluID0gZmFucyBbbV1bMF07CglpbnQgdGFyZ2V0ID0gbTsKCWZvciAoaW50IGkgPSBtKzE7IGkgPCBjb3VudDsgaSsrKQoJCWlmIChmYW5zIFtpXVswXSA8IG1pbikgewoJCQltaW4gPSBmYW5zIFtpXVswXTsKCQkJdGFyZ2V0ID0gaTsKCQl9IC8vIGVuZCBuZXcgbWF4IGZvdW5kCglyZXR1cm4gdGFyZ2V0Owp9IC8vIGVuZCBmdW5jdGlvbiBmaW5kTWluU2FsZXMKCnZvaWQgc29ydEJ5U2FsZXMgKCkgewoJaW50IHRhcmdldDsKCWZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewoJCXRhcmdldCA9IGZpbmRNaW5TYWxlcyAoaSk7CgkJaWYgKHRhcmdldCA+IGkpCgkJCXN3aXRjaFJvd3MgKGksIHRhcmdldCk7Cgl9IC8vIGZvciBlYWNoIGNvbmNlcnQKfSAvLyBlbmQgZnVuY3Rpb24gc29ydEJ5U2FsZXMKCnZvaWQgZ2V0RGF0YSAoKSB7CgkvLyBmb3IgKGludCBpID0gMDsgaSA8IE1BWEc7IGkrKykgc2FsZXMgW2ldID0gMDsKCXByaW50ZiAoIkVudGVyIHRpY2tldCBwcmljZXMgaW4gZWFjaCBvZiAlZCBjYXRlb2dvcmllczogIiwgTUFYQyk7Cglmb3IgKGludCBpID0gMDsgaSA8IE1BWEM7IGkrKykKCQlzY2FuZiAoIiVmIiwgJnByaWNlcyBbaV0pOwoJcHJpbnRmICgiLS0gRW50ZXIgZ3JvdXAgYW5kIGZhbnMgaW4gJWQgY2F0ZWdvcmllc1xuIiwgTUFYQyk7CglwcmludGYgKCIgLiB0byBmaW5pc2ggZW50cmllczpcbiIpOwoJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhHOyBpKyspIHsKCQlzY2FuZiAoIiVzIiwgJmdyb3VwW2ldKTsKCQlpZiAoZ3JvdXAgW2ldWzBdID09ICcuJykKCQkJYnJlYWs7CgkJY291bnQrKzsKCQlmb3IgKGludCBqID0gMDsgaiA8IE1BWEM7IGorKykKCQkJc2NhbmYgKCIlZCIsICZmYW5zW2ldW2pdKTsKCX0gLy8gZW5kIGZvciBlYWNoIGdyb3VwCn0gLy8gZW5kIGZ1bmN0aW9uIGdldERhdGEKCnZvaWQgcHJpbnRXZWxjb21lKCl7CglwcmludGYoIkhlbGxvIHRoZXJlIVxuTXkgbmFtZSBpcyBTZXJnaW8gQXJpc3BlXG5BbmQgdGhpcyBwcm9ncmFtIHdpbGwgY29tcHV0ZSB0aGUgY29uY2VydCBkYXRhIHlvdSBpbnB1dCBzaG9ydGx5Li4uXG4iKTsKfQp2b2lkIHRvdGFsU2FsZXMoKXsKCWRvdWJsZSB0b3RhbFNhbGVzID0wOwoJZm9yKGludCBpPTA7aTxjb3VudDtpKyspewoJCXRvdGFsU2FsZXMgKz0gc2FsZXNbaV07Cgl9CglwcmludGYoIlRoZSB0b3RhbCBzYWxlcyBtYWRlIHdlcmU6ICVmXG4iLHRvdGFsU2FsZXMpOwp9CgppbnQgbWFpbih2b2lkKSB7CglwcmludFdlbGNvbWUoKTsKCWdldERhdGEgKCk7Cgljb21wdXRlU2FsZXMgKCk7CglwcmludEFycmF5ICgpOwoJcHJpbnRmICgiXG4gLS0tIFNvcnRlZCAtLS1cbiIpOwoJc29ydEJ5U2FsZXMgKCk7CglwcmludEFycmF5ICgpOwoJdG90YWxTYWxlcygpOwoJcHJpbnRmKCIuLi4gYnllIC4uLlxuIik7CglyZXR1cm4gMDsKfQ==