// scores for ClubOpolis contest #4 #include #include // define for each city #define AQUABAPO 0 #define AYTONVIL 1 #define COASTALC 2 #define COASTCIT 3 #define GREGLAND 4 #define HILLSBOR 5 #define INTRAMUR 6 #define KETHVAR3 7 #define LONGFALL 8 #define METEOR 9 #define TERISUB5 10 #define TWOLEV2 11 #define TWOLEV3 12 typedef struct { int iCity; float fExtremeTotal; float fExtremeAverage; float fExtremeJudged; float fScenicTotal; float fScenicAverage; float fScenicJudged; float fUniqueTotal; float fUniqueAverage; float fUniqueJudged; float fScore; } typeCity; typedef struct { int iCity; float fExtremeScore; float fScenicScore; float fUniqueScore; } typeJudge; typedef struct { char name[9]; char mayor[50]; } typeName; // sandy king typeJudge judge1[] = { {AQUABAPO, 0, 0, 0}, {AYTONVIL, 85, 70, 85}, {COASTALC, 35, 65, 50}, {COASTCIT, 10, 20, 10}, {GREGLAND, 0, 0, 0}, {HILLSBOR, 90, 75, 60}, {INTRAMUR, 25, 85, 80}, {KETHVAR3, 30, 10, 25}, {LONGFALL, 45, 85, 75}, {METEOR , 85, 50, 75}, {TERISUB5, 30, 35, 45}, {TWOLEV2 , 60, 50, 80}, {TWOLEV3 , 90, 10, 90} }; // patrick lindmark typeJudge judge2[] = { {AQUABAPO, 50, 92, 17}, {AYTONVIL, 95, 40, 70}, {COASTALC, 90, 95, 90}, {COASTCIT, 0, 0, 0}, {GREGLAND, 20, 15, 10}, {HILLSBOR, 20, 16, 13}, {INTRAMUR, 30, 90, 56}, {KETHVAR3, 25, 92, 80}, {LONGFALL, 82, 50, 90}, {METEOR , 95, 90, 96}, {TERISUB5, 90, 30, 95}, {TWOLEV2 , 96, 70, 100}, {TWOLEV3 , 100, 23, 100} }; // david dischinger typeJudge judge3[] = { {AQUABAPO, 20, 90, 70}, {AYTONVIL, 30, 10, 50}, {COASTALC, 20, 70, 40}, {COASTCIT, 10, 30, 40}, {GREGLAND, 30, 30, 40}, {HILLSBOR, 40, 100, 90}, {INTRAMUR, 40, 100, 89}, {KETHVAR3, 40, 40, 40}, {LONGFALL, 50, 80, 90}, {METEOR , 60, 40, 70}, {TERISUB5, 60, 50, 100}, {TWOLEV2 , 90, 60, 100}, {TWOLEV3 , 90, 20, 100} }; typeCity city[ 13 ]; typeName name[13] = { { "AQUABAPO", "Darwin Poblete" }, { "AYTONVIL", "James Ayton" }, { "COASTALC", "Brian Beggs" }, { "COASTCIT", "Andrew Kutzy" }, { "GREGLAND", "Greg Polerstock" }, { "HILLSBOR", "Darwin Poblete" }, { "INTRAMUR", "Darwin Poblete" }, { "KETHVAR3", "Keith Donnelly" }, { "LONGFALL", "Patrick Coston" }, { "METEOR ", "Stephen Westrich" }, { "TERISUB5", "Paul Martin" }, { "TWOLEV2 ", "Patrick Coston" }, { "TWOLEV3 ", "Patrick Coston" } }; void displayLine( int, char *, float, float, float, float, char * ); void displayHeader1( void ); void displayHeader2( void ); void displaySeparator( void ); void main( void ) { int i; int iCity; int bSorted; typeCity tmpCity; float fJudged; memset( city, 0, (sizeof(typeCity)*13) ); // ****************************************************************************** // get totals from judges // ****************************************************************************** for ( i=0; i<13; i++ ) { city[i].iCity = i; // give city it's number // judge 1 iCity = judge1[i].iCity; if ( judge1[i].fExtremeScore != 0 ) // city was not scored { city[ iCity ].fExtremeTotal += judge1[i].fExtremeScore; city[ iCity ].fScenicTotal += judge1[i].fScenicScore; city[ iCity ].fUniqueTotal += judge1[i].fUniqueScore; city[ iCity ].fExtremeJudged++; city[ iCity ].fScenicJudged++; city[ iCity ].fUniqueJudged++; } // judge 2 iCity = judge2[i].iCity; if ( judge2[i].fExtremeScore != 0 ) { city[ iCity ].fExtremeTotal += judge2[i].fExtremeScore; city[ iCity ].fScenicTotal += judge2[i].fScenicScore; city[ iCity ].fUniqueTotal += judge2[i].fUniqueScore; city[ iCity ].fExtremeJudged++; city[ iCity ].fScenicJudged++; city[ iCity ].fUniqueJudged++; } // judge 3 iCity = judge3[i].iCity; if ( judge3[i].fExtremeScore != 0 ) { city[ iCity ].fExtremeTotal += judge3[i].fExtremeScore; city[ iCity ].fScenicTotal += judge3[i].fScenicScore; city[ iCity ].fUniqueTotal += judge3[i].fUniqueScore; city[ iCity ].fExtremeJudged++; city[ iCity ].fScenicJudged++; city[ iCity ].fUniqueJudged++; } } // ****************************************************************************** // calc averages // ****************************************************************************** for ( i=0; i<13; i++ ) { city[i].fExtremeAverage = city[i].fExtremeTotal / city[i].fExtremeJudged; city[i].fScenicAverage = city[i].fScenicTotal / city[i].fScenicJudged; city[i].fUniqueAverage = city[i].fUniqueTotal / city[i].fUniqueJudged; fJudged = city[i].fExtremeJudged + city[i].fScenicJudged + city[i].fUniqueJudged; city[i].fScore = ( city[i].fExtremeTotal + city[i].fScenicTotal + city[i].fUniqueTotal ) / fJudged; // city[i].fExtremeAverage + // city[i].fScenicAverage + // city[i].fUniqueAverage ) / 3; } // ****************************************************************************** // sort according to score // ****************************************************************************** do { bSorted = 1; for ( i=0; i<12; i++ ) { if ( city[i].fScore < city[i+1].fScore ) { tmpCity = city[i]; city[i] = city[i+1]; city[i+1] = tmpCity; bSorted = 0; } } } while( !bSorted ); displaySeparator(); printf ( "AVERAGE SCORES OF EXTREME, SCENIC AND UNIQUE\n" ); displayHeader1(); for ( i=0; i<13; i++ ) { iCity = city[i].iCity; printf( "%2d. %s %3.2f %3.2f %3.2f %3.2f %s\n", i+1, name[iCity].name, city[i].fExtremeAverage, city[i].fScenicAverage, city[i].fUniqueAverage, city[i].fScore, name[iCity].mayor ); } displaySeparator(); // ****************************************************************************** // sort according to extreme // ****************************************************************************** do { bSorted = 1; for ( i=0; i<12; i++ ) { if ( city[i].fExtremeAverage < city[i+1].fExtremeAverage ) { tmpCity = city[i]; city[i] = city[i+1]; city[i+1] = tmpCity; bSorted = 0; } } } while( !bSorted ); printf ( "AVERAGE SCORES OF EXTREME (* = NOT SCORED)\n" ); displayHeader2(); for ( i=0; i<13; i++ ) { iCity = city[i].iCity; displayLine( i, name[iCity].name, judge1[iCity].fExtremeScore, judge2[iCity].fExtremeScore, judge3[iCity].fExtremeScore, city[i].fExtremeAverage, name[iCity].mayor ); } displaySeparator(); // ****************************************************************************** // sort according to scenic // ****************************************************************************** do { bSorted = 1; for ( i=0; i<12; i++ ) { if ( city[i].fScenicAverage < city[i+1].fScenicAverage ) { tmpCity = city[i]; city[i] = city[i+1]; city[i+1] = tmpCity; bSorted = 0; } } } while( !bSorted ); printf ( "AVERAGE SCORES OF SCENIC (* = NOT SCORED)\n" ); displayHeader2(); for ( i=0; i<13; i++ ) { iCity = city[i].iCity; displayLine( i, name[iCity].name, judge1[iCity].fScenicScore, judge2[iCity].fScenicScore, judge3[iCity].fScenicScore, city[i].fScenicAverage, name[iCity].mayor ); } displaySeparator(); // ****************************************************************************** // sort according to unique // ****************************************************************************** do { bSorted = 1; for ( i=0; i<12; i++ ) { if ( city[i].fUniqueAverage < city[i+1].fUniqueAverage ) { tmpCity = city[i]; city[i] = city[i+1]; city[i+1] = tmpCity; bSorted = 0; } } } while( !bSorted ); printf ( "AVERAGE SCORES OF UNIQUE (* = NOT SCORED)\n" ); displayHeader2(); for ( i=0; i<13; i++ ) { iCity = city[i].iCity; displayLine( i, name[iCity].name, judge1[iCity].fUniqueScore, judge2[iCity].fUniqueScore, judge3[iCity].fUniqueScore, city[i].fUniqueAverage, name[iCity].mayor ); } displaySeparator(); // ****************************************************************************** // display scores from judge 1 (sandy king) // ****************************************************************************** printf("JUDGE #1: SANDY KING (* = NOT SCORED)\n\n" ); printf("NAME EXTREME SCENIC UNIQUE\n\n" ); for( i=0; i<13; i++ ) { if ( judge1[i].fExtremeScore != 0 ) printf("%s %3.0f %3.0f %3.0f\n", name[i].name, judge1[i].fExtremeScore, judge1[i].fScenicScore, judge1[i].fUniqueScore ); else printf("%s * * *\n", name[i].name ); } displaySeparator(); // ****************************************************************************** // display scores from judge 2 (patrick lindmark) // ****************************************************************************** printf("JUDGE #2: PATRICK LINDMARK (* = NOT SCORED)\n\n" ); printf("NAME EXTREME SCENIC UNIQUE\n\n" ); for( i=0; i<13; i++ ) { if ( judge2[i].fExtremeScore != 0 ) printf("%s %3.0f %3.0f %3.0f\n", name[i].name, judge2[i].fExtremeScore, judge2[i].fScenicScore, judge2[i].fUniqueScore ); else printf("%s * * *\n", name[i].name ); } displaySeparator(); // ****************************************************************************** // display scores from judge 3 (david dischinger) // ****************************************************************************** printf("JUDGE #3: DAVID DISCHINGER\n\n" ); printf("NAME EXTREME SCENIC UNIQUE\n\n" ); for( i=0; i<13; i++ ) { if ( judge3[i].fExtremeScore != 0 ) printf("%s %3.0f %3.0f %3.0f\n", name[i].name, judge3[i].fExtremeScore, judge3[i].fScenicScore, judge3[i].fUniqueScore ); else printf("%s * * *\n", name[i].name ); } displaySeparator(); } void displayLine( int iLineNum, char *pszCity, float fScore1, float fScore2, float fScore3, float fAverage, char *pszMayor ) { printf( "%2d. %s", (iLineNum+1), pszCity ); printf( " " ); if ( fScore1 == 0 ) printf( " *" ); else printf( "%3.0f", fScore1 ); printf( " " ); if ( fScore2 == 0 ) printf( " *" ); else printf( "%3.0f", fScore2 ); printf( " " ); if ( fScore3 == 0 ) printf( " *" ); else printf( "%3.0f", fScore3 ); printf( " " ); printf("%3.2f %s\n", fAverage, pszMayor ); } void displayHeader1( void ) { printf( "\n" ); printf( " CITY AVERAGE AVERAGE AVERAGE FINAL\n" ); printf( "NO. NAME EXTREME SCENIC UNIQUE SCORE ARCHITECT\n\n" ); } void displayHeader2( void ) { printf( "\n" ); printf( " CITY JUDGE JUDGE JUDGE FINAL\n" ); printf( "NO. NAME #1 #2 #3 SCORE ARCHITECT\n\n" ); } void displaySeparator( void ) { printf ( "*****************************************************************************\n" ); }