// Justin C. Miller // 2007.01.30 // Homework 1 #include // cin, cout, endl #include // EXIT_SUCCESS, EXIT_FAILURE #include // string using namespace std ; double USATodayPortion(int) ; double HarrisPortion(int) ; double ComputerPortion(int, int, int, int, int, int) ; double BCS(int, int, int, int, int, int, int, int) ; void ChampionshipGame(string *, double *, int) ; // Pre-argc, argv (not used) // Post-inputs football teams & rankings, computes championship game matchup int main(int argc, char * argv[]) { int NumberOfTeams = 0 ; cout << "Please input Number of Teams: " ; cin >> NumberOfTeams ; string Team[NumberOfTeams] ; double BCSRanking[NumberOfTeams] ; int USAToday[NumberOfTeams] ; int Harris[NumberOfTeams] ; int PeterWolfe[NumberOfTeams] ; int WesColley[NumberOfTeams] ; int Sagarin[NumberOfTeams] ; int SeattleTimes[NumberOfTeams] ; int RichardBillingsley[NumberOfTeams] ; int KennethMassey[NumberOfTeams] ; for(int i = 0 ; i < NumberOfTeams ; i++) { cout << "Please input Team " << (i+1) << "'s Name: " ; cin >> Team[i] ; cout << "Please input " << Team[i] << " USA Today Ranking: " ; cin >> USAToday[i] ; cout << "Please input " << Team[i] << " Harris Ranking: " ; cin >> Harris[i] ; cout << "Please input " << Team[i] << " Peter Wolfe Ranking: " ; cin >> PeterWolfe[i] ; cout << "Please input " << Team[i] << " Wes Colley Ranking: " ; cin >> WesColley[i] ; cout << "Please input " << Team[i] << " Sagarin Ranking: " ; cin >> Sagarin[i] ; cout << "Please input " << Team[i] << " Seattle Times Ranking: " ; cin >> SeattleTimes[i] ; cout << "Please input " << Team[i] << " Richard Billinglsey Ranking: " ; cin >> RichardBillingsley[i] ; cout << "Please input " << Team[i] << " Kenneth Massey Ranking: " ; cin >> KennethMassey[i] ; BCSRanking[i] = BCS(USAToday[i], Harris[i], PeterWolfe[i], WesColley[i], Sagarin[i], SeattleTimes[i], RichardBillingsley[i], KennethMassey[i]) ; } ChampionshipGame(Team, BCSRanking, NumberOfTeams) ; return EXIT_SUCCESS ; } // Pre- Ranking // Post - return 1/3 * (1/Ranking) double USATodayPortion(int Ranking) { return (1.0 / 3.0) * (1.0 / Ranking) ; } // Pre- Ranking // Post - return 1/3 * (1/Ranking) double HarrisPortion(int Ranking) { return (1.0 / 3.0) * (1.0 / Ranking) ; } // Pre- 6 Computer Rankings // Post- Return 1.0/3.0 * ( ((1.0 / 2nd Best Computer Ranking) + // (1.0 / 3rd Best Computer Ranking) + // (1.0 / 4th Best Computer Ranking) + // (1.0 / 5th Best Computer Ranking)) / 4.0 ) double ComputerPortion(int PeterWolfe, int WesColley, int Sagarin, int SeattleTimes, int RichardBillingsley, int KennethMassey) { int Rankings[6] ; Rankings[0] = PeterWolfe ; Rankings[1] = WesColley ; Rankings[2] = Sagarin ; Rankings[3] = SeattleTimes ; Rankings[4] = RichardBillingsley ; Rankings[5] = KennethMassey ; int HighIndex = 0 ; double High = Rankings[0] ; int LowIndex = 0 ; double Low = Rankings[0] ; for(int i = 1 ; i < 6 ; i++) { if(Rankings[i] > High) { HighIndex = i ; High = Rankings[i] ; } if(Rankings[i] < Low) { LowIndex = i ; Low = Rankings[i] ; } } double Sum = 0 ; for(int i = 0 ; i < 6 ; i++) { Sum += 1.0 / Rankings[i] ; } // Remove the lo Sum -= 1.0 / Rankings[LowIndex] ; // Remove the lo Sum -= 1.0 / Rankings[HighIndex] ; return (1.0 / 3.0) * (Sum / 4) ; } // Pre-USAToday, Harris, and 6 Computer Rankings // Post-return USAToday + Harris + Computer Rankings double BCS(int USAToday, int Harris, int PeterWolfe, int WesColley, int Sagarin, int SeattleTimes, int RichardBillingsley, int KennethMassey) { // FOR DEBUG /* cout << "USAToday: " << USATodayPortion(USAToday) << endl ; cout << "Harris:" << HarrisPortion(Harris) << endl ; cout << "Computer 6: " << ComputerPortion(PeterWolfe, WesColley, Sagarin, SeattleTimes, RichardBillingsley, KennethMassey) << endl ; */ return USATodayPortion(USAToday) + HarrisPortion(Harris) + ComputerPortion(PeterWolfe, WesColley, Sagarin, SeattleTimes, RichardBillingsley, KennethMassey) ; } // Pre- Teams array, BCSRankings array, Number of Teams (must be >= 2) // Post- displays championship game (vs top 2 rankings) void ChampionshipGame(string * Team, double * BCSRanking, int NumberOfTeams) { int HighIndex1 = 0 ; double High1 = BCSRanking[0] ; for(int i = 1 ; i < NumberOfTeams ; i++) { if(BCSRanking[i] > High1) { HighIndex1 = i ; High1 = BCSRanking[i] ; } } int HighIndex2 = 0 ; double High2 = 0 ; if(HighIndex1 != 0) { High2 = BCSRanking[0] ; } else { High2 = BCSRanking[1] ; } for(int i = 0 ; i < NumberOfTeams ; i++) { if(i != HighIndex1) { if(BCSRanking[i] > High2) { HighIndex2 = i ; High2 = BCSRanking[i] ; } } } // FOR DEBUG /* for(int i = 0 ; i < NumberOfTeams ; i++) { cout << Team[i] << " has " << BCSRanking[i] << endl ; } */ cout << "BCS Championship Game: #1 " << Team[HighIndex1] << " vs. #2 " << Team[HighIndex2] << endl ; }