##### Differences

This shows you the differences between two versions of the page.

 — cs-142:family-feud [2015/06/04 12:02] (current)cs142ta created 2015/06/04 12:02 cs142ta created 2015/06/04 12:02 cs142ta created Line 1: Line 1: + =Family Feud!= + ==Background== + * You want a program to track points for two teams on (a simplified) Family Feud game! + * In each round a survey question is given that has been asked to 100 people and the top answers have been recorded + * To start the round, a representative from each team is chosen two play in a “toss-up” + * The survey question is read + * Whichever team’s rep buzzes in and correctly guesses a top answer first, that team gets to guess the rest of the top survey answers + * Points are allotted based on the popularity of the survey answer + ==Problem== + * You want a program to track points for two teams + * By using a pointer, it is possible to switch to a different team without modifying the code for adjusting a team’s score. + * Start with two score-keeping variables: + ** int team_A_score = 0; + ** int team_B_score = 0; + * How would you write code to adjust the score of whichever team wins the toss-up? + * For each of five rounds (i.e., survey questions), ​ + ** Prompt for the team that won the toss-up + ** Prompt for points to add for each guess + ** End the round after three wrong guesses (i.e., 0 points added) + * Print out the winner + * Let’s play the Feud! + ==Solution== + + #include <​iostream>​ + #include <​vector>​ + #include <​string>​ + + using namespace std; + + const int MATCH_MISS_COUNT = 3; + const int ROUNDS = 2; + + string prompt_for_team();​ + int prompt_for_points();​ + + int main() + { + int team_A_score = 0; + int team_B_score = 0; + + // By using a pointer, we can write code to adjust an arbitrary team's score and switch to different teams as necessary. + int * winning_team_score = NULL; + + // SIMULATE MULTIPLE ROUNDS + for (int round = 0; round < ROUNDS; round++) + { + // SIMULATE ONE ROUND + // Prompt for the team that won the toss-up (winning_team_score) + string winning_team = prompt_for_team();​ + + if (winning_team == "​A"​) + { + // A pointer must be assigned to the address of a variable ​ + winning_team_score = &​team_A_score;​ + } + else if (winning_team == "​B"​) + { + winning_team_score = &​team_B_score;​ + } + + int wrong_guesses = 0; + while (wrong_guesses < 3) + { + // Prompt for points to add for each guess + int points_to_add = prompt_for_points();​ + + if (points_to_add == 0) + { + wrong_guesses++;​ + } + else + { + // We avoid having to duplicate this code for both team A and team B by using a pointer + (*winning_team_score) = (*winning_team_score) + points_to_add;​ + } + + // End the guessing after a certain number of wrong guesses (i.e., 0 points added) + } + cout << "Score at end of round " << round << " is A - " << team_A_score << ", B - " << team_B_score << endl; + } + cout << "Team " << (team_A_score > team_B_score ? "​A"​ : "​B"​) << " WINS!" << endl; + cout << "GAME OVER" << endl; + system("​pause"​);​ + return 0; + } + + /* + Prompt for team that won the toss-up, read the input (no input validation) + @return user input (A or B) + */ + string prompt_for_team() + { + cout << "In the toss-up, which was the winning team (A,B)? "; + string team_that_answered;​ + cin >> team_that_answered;​ + + return team_that_answered;​ + } + + /* + Prompt for points to be added (no input validation) + @return user input (points) + */ + int prompt_for_points() + { + cout << "​Points to add:"; + int points_to_add;​ + cin >> points_to_add;​ + + return points_to_add;​ + } +
cs-142/family-feud.txt · Last modified: 2015/06/04 12:02 by cs142ta
Back to top