// C code
// This code will compute the values of the sales ticket sales for concerts
// and sort the entries by those values
// Developer: H Reynolds CMIS102
// Date: 12 Jul 19
#include <stdio.h>
#define MAXN 100 // max characters in a group/concert name
#define MAXG 50 // 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 printWelcome ( ) {
printf ( "Hayden Reynolds, CMIS 102\n " ) ; printf ( "This program computes ticket sales for concerts\n and the total sales for a series of concerts.\n \n " ) ; }
void printArray ( ) {
printf ( "%15s%5s%5s%5s%10s\n " , "Concert" , "s1" , "s2" , "s3" , "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 = 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 ( " Type a \" .\" 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 ) {
printWelcome ( ) ;
getData ( ) ;
computeSales ( ) ;
printArray ( ) ;
printf ( "\n --- Sorted ---\n " ) ; sortBySales ( ) ;
printArray ( ) ;
return 0 ;
}
Ly8gQyBjb2RlCi8vIFRoaXMgY29kZSB3aWxsIGNvbXB1dGUgdGhlIHZhbHVlcyBvZiB0aGUgc2FsZXMgdGlja2V0IHNhbGVzIGZvciBjb25jZXJ0cwovLyBhbmQgc29ydCB0aGUgZW50cmllcyBieSB0aG9zZSB2YWx1ZXMKLy8gRGV2ZWxvcGVyOiBIIFJleW5vbGRzIENNSVMxMDIKLy8gRGF0ZTogMTIgSnVsIDE5CgojaW5jbHVkZSA8c3RkaW8uaD4KCiNkZWZpbmUgTUFYTiAxMDAgLy8gbWF4IGNoYXJhY3RlcnMgaW4gYSBncm91cC9jb25jZXJ0IG5hbWUKI2RlZmluZSBNQVhHICA1MCAvLyBtYXggY29uY2VydHMvZ3JvdXBzCiNkZWZpbmUgTUFYQyAgIDMgLy8gbWF4IGNhdGVnb3JpZXMKCmNoYXIgIGdyb3VwICBbTUFYR11bTUFYTl07CmludCAgIGZhbnMgICBbTUFYR11bTUFYQ107CmZsb2F0IHByaWNlcyBbTUFYQ107CmZsb2F0IHNhbGVzICBbTUFYR107CmludCAgIGNvdW50ID0gMDsKCnZvaWQgcHJpbnRXZWxjb21lICgpIHsKICBwcmludGYgKCJIYXlkZW4gUmV5bm9sZHMsIENNSVMgMTAyXG4iKTsKICBwcmludGYgKCJUaGlzIHByb2dyYW0gY29tcHV0ZXMgdGlja2V0IHNhbGVzIGZvciBjb25jZXJ0c1xuYW5kIHRoZSB0b3RhbCBzYWxlcyBmb3IgYSBzZXJpZXMgb2YgY29uY2VydHMuXG5cbiIpOwp9CiAKdm9pZCBwcmludEFycmF5ICgpIHsKICBwcmludGYgKCIlMTVzJTVzJTVzJTVzJTEwc1xuIiwgCiAgIkNvbmNlcnQiLCAiczEiLCAiczIiLCAiczMiLCAiU2FsZXMiKTsKICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgIHByaW50ZiAoIiUxNXMiLCBncm91cCBbaV0pOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBNQVhDOyBqKyspIHsKICAgICAgcHJpbnRmICgiJTVkIiwgZmFuc1tpXVtqXSk7CiAgICB9IC8vIGVuZCBmb3IgZWFjaCBjYXRlZ29yeQogICAgcHJpbnRmICgiJTEwLjJmXG4iLCBzYWxlcyBbaV0pOwogIH0gLy8gZW5kIGZvciBlYWNoIGdyb3VwCn0gLy8gZW5kIGZ1bmN0aW9uIHByaW50QXJyYXkKCnZvaWQgY29tcHV0ZVNhbGVzICgpIHsKICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgIHNhbGVzIFtpXSA9IDA7CiAgICBmb3IgKGludCBqID0gMDsgaiA8IE1BWEM7IGorKykgewogICAgICBzYWxlcyBbaV0gKz0gcHJpY2VzIFtqXSAqIGZhbnMgW2ldW2pdOwogICAgfSAvLyBlbmQgZm9yIGVhY2ggY2F0ZWdvcnkKICB9IC8vIGVuZCBmb3IgZWFjaCBncm91cAp9IC8vIGVuZCBmdW5jdGlvbiBjb21wdXRlU2FsZXMKCnZvaWQgc3dpdGNoUm93cyAoaW50IG0sIGludCBuKSB7CiAgY2hhciB0YzsKICBpbnQgIHRpOwogIGZsb2F0IHY7CiAgLy8gcHJpbnRmICgiU3dpdGNoaW5nICVkIHdpdGggJWRcbiIsIG0sIG4pOwogIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYTjsgaSsrKSB7CiAgICB0YyA9IGdyb3VwIFttXVtpXTsKICAgIGdyb3VwIFttXVtpXSA9IGdyb3VwIFtuXVtpXTsKICAgIGdyb3VwIFtuXVtpXSA9IHRjOwogIH0gLy8gZW5kIGZvciBlYWNoIGNoYXJhY3RlciBpbiBhIGdyb3VwIG5hbWUKICBmb3IgKGludCBpID0gMDsgaSA8IE1BWEM7IGkrKykgewogICAgdGkgPSBmYW5zIFttXVtpXTsKICAgIGZhbnMgW21dW2ldID0gZmFucyBbbl1baV07CiAgICBmYW5zIFtuXVtpXSA9IHRpOwogIH0gLy8gZW5kIGZvciBlYWNoIGZhbiBjYXRlZ29yeQogIHYgPSBzYWxlcyBbbV07CiAgc2FsZXMgW21dID0gc2FsZXMgW25dOwogIHNhbGVzIFtuXSA9IHY7Cn0gLy8gZW5kIHN3aXRjaAoKaW50IGZpbmRNaW5TYWxlcyAoaW50IG0pIHsKICBmbG9hdCBtaW4gPSBzYWxlcyBbbV07CiAgaW50IHRhcmdldCA9IG07CiAgZm9yIChpbnQgaSA9IG0rMTsgaSA8IGNvdW50OyBpKyspCiAgICBpZiAoc2FsZXMgW2ldIDwgbWluKSB7CiAgICAgIG1pbiA9IHNhbGVzIFtpXTsKICAgICAgdGFyZ2V0ID0gaTsKICAgIH0gLy8gZW5kIG5ldyBtYXggZm91bmQKICByZXR1cm4gdGFyZ2V0Owp9IC8vIGVuZCBmdW5jdGlvbiBmaW5kTWluU2FsZXMKCnZvaWQgc29ydEJ5U2FsZXMgKCkgewogIGludCB0YXJnZXQ7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICB0YXJnZXQgPSBmaW5kTWluU2FsZXMgKGkpOwogICAgaWYgKHRhcmdldCA+IGkpCiAgICAgIHN3aXRjaFJvd3MgKGksIHRhcmdldCk7CiAgfSAvLyBmb3IgZWFjaCBjb25jZXJ0Cn0gLy8gZW5kIGZ1bmN0aW9uIHNvcnRCeVNhbGVzCgp2b2lkIGdldERhdGEgKCkgewogIC8vIGZvciAoaW50IGkgPSAwOyBpIDwgTUFYRzsgaSsrKSBzYWxlcyBbaV0gPSAwOwogIHByaW50ZiAoIkVudGVyIHRpY2tldCBwcmljZXMgaW4gZWFjaCBvZiAlZCBjYXRlb2dvcmllczogIiwgTUFYQyk7CiAgZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhDOyBpKyspCiAgICBzY2FuZiAoIiVmIiwgJnByaWNlcyBbaV0pOwogIHByaW50ZiAoIi0tIEVudGVyIGdyb3VwIGFuZCBmYW5zIGluICVkIGNhdGVnb3JpZXNcbiIsIE1BWEMpOwogIHByaW50ZiAoIiBUeXBlIGEgXCIuXCIgdG8gZmluaXNoIGVudHJpZXM6XG4iKTsKICBmb3IgKGludCBpID0gMDsgaSA8IE1BWEc7IGkrKykgewogICAgc2NhbmYgKCIlcyIsIGdyb3VwW2ldKTsKICAgIGlmIChncm91cCBbaV1bMF0gPT0gJy4nKSAKICAgICAgYnJlYWs7CiAgICBjb3VudCsrOwogICAgZm9yIChpbnQgaiA9IDA7IGogPCBNQVhDOyBqKyspCiAgICAgIHNjYW5mICgiJWQiLCAmZmFuc1tpXVtqXSk7CiAgfSAvLyBlbmQgZm9yIGVhY2ggZ3JvdXAKfSAvLyBlbmQgZnVuY3Rpb24gZ2V0RGF0YQoKaW50IG1haW4odm9pZCkgewogIHByaW50V2VsY29tZSAoKTsKICBnZXREYXRhICgpOwogIGNvbXB1dGVTYWxlcyAoKTsKICBwcmludEFycmF5ICgpOwogIHByaW50ZiAoIlxuIC0tLSBTb3J0ZWQgLS0tXG4iKTsKICBzb3J0QnlTYWxlcyAoKTsKICBwcmludEFycmF5ICgpOwogIHByaW50ZigiLi4uIGJ5ZSAuLi5cbiIpOwogIHJldHVybiAwOwp9