NEED HELP BAD FOR THIS LAB!!!! We\'ve only convered #include <vector>,iostream,s
ID: 3752050 • Letter: N
Question
NEED HELP BAD FOR THIS LAB!!!!
We've only convered #include <vector>,iostream,string, and cmath
1. You must use a vector to store all of the player names. All player names will be a single name.
2. You must use another vector to store the total score for each player. You must calculate the total score for each player after all rolls have been entered.
3. You must use an array to store each roll's value.
4. The number of rolls is variable depending on whether the player threw a strike (knocked down 10 pins in one roll), spare, or neither. Please see "Scoring Bowling" below.
5. You must use a for loop to input the roll values into the array.
6. If the user types "done" before entering any names, output "No players were entered."
7. In the event of a tie, the first player to obtain the best or worst score should be printed.
8. You can assume that the user will input valid scores. You do not need to perform error checking for invalid input.
Enter player's name (done for no more players): John Enter score for frame 1, roLL 1: 10 Enter score for frame 2, roll 1: 10 Enter score for frame 3, roll 1: 10 Enter score for frame 4, roll 1: 10 Enter score for frame 5, roll 1: 10 Enter score for frame 6, roll 1: 10 Enter score for frame 7, roll 1: 10 Enter score for frame 8, roll 1: 10 Enter score for frame 9, roll 1: 10 Enter score for frame 10, roll 1: 10 Enter score for frame 10, roll 2: 10 Enter score for frame 10, roll 3: 10 Enter player's name (done for no more players): Cheryl Enter score for frame 1, roll 1: 8 Enter score for frame 1, roll 2: 1 Enter score for frame 2, roll 1: 0 Enter score for frame 2, roll 2: 9 Enter score for frame 3, roll 1: 2 Enter score for frame 3, roll 2: 8 Enter score for frame 4, roll 1: 10 Enter score for frame 5, roll 1: 6 Enter score for frame 5, roll 2: 3 Enter score for frame 6, roll 1: 7 Enter score for frame 6, roll 2: 0 Enter score for frame 7, roll 1: 5 Enter score for frame 7, roll 2: 2 Enter score for frame 8, roll 1: 10 Enter score for frame 9, roll 1: 0 Enter score for frame 9, roll 2: 6 Enter score for frame 10, roll 1: 2 Enter score for frame 10, roll 2: 8 Enter score for frame 10, roll 3: 10 Enter player's name (done for no more players): done John scored 300 Cheryl scored 122 Cheryl did the worst by scoring 122. John won the game by scoring 300 Enter player's name (done for no more players): done No players were enteredExplanation / Answer
See the properly commented C++ code below. Rate positive if satisfied :)
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
// Starting the input and displaying error on entering 0 names
string s = "";
cout << "Enter player's name (done for no more players): ";
cin >> s;
if(s == "done")
{
cout << "No players were entered. ";
return 0;
}
int mx_score = INT_MIN, mx_scorer = 0, mn_score = INT_MAX, mn_scorer = 0, index = 0;
// To keep track of name and scores
vector<string> name;
vector<int> score;
while(s != "done")
{
name.push_back(s);
// Array to store all the scores in every roll
int rolls[11][4];
for(int i = 1; i <= 10; i++)
{
cout << "Enter score for frame " << i << ", roll 1: ";
cin >> rolls[i][0];
// For the last frame, generating bonus rolls
if(i == 10)
{
cout << "Enter score for frame " << i << ", roll 2: ";
cin >> rolls[i][1];
// Bonus roll
if(rolls[i][0] + rolls[i][1] >= 10)
{
cout << "Enter score for frame " << i << ", roll 3: ";
cin >> rolls[i][2];
}
else
{
rolls[i][2] = 0;
}
}
// No need for another roll if score is already 10
else if(rolls[i][0] != 10)
{
cout << "Enter score for frame " << i << ", roll 2: ";
cin >> rolls[i][1];
}
else
{
rolls[i][1] = 0;
}
}
int ans = 0;
for(int i = 1; i <= 10; i++)
{
// Adding the face value as it is
ans = ans + rolls[i][0] + rolls[i][1];
if(i == 10)
{
// Adding bonus value. If no bonus then it will be 0
ans = ans + rolls[i][2];
}
else if(rolls[i][0] == 10)
{
// This means a strike. Thus including next 2 rolls
int temp;
ans = ans + rolls[i + 1][0];
if(rolls[i + 1][0] == 10)
{
// This means a double strike. Thus include next frame.
if(i != 9)
ans = ans + rolls[i + 2][0];
else
ans = ans + rolls[i + 1][1];
}
else
{
// This means include both the rolls for next frame.
ans = ans + rolls[i + 1][1];
}
}
// This means a spare
else if(rolls[i][0] + rolls[i][1] == 10)
{
// Include next roll
ans = ans + rolls[i + 1][0];
}
}
score.push_back(ans);
// If maximum score is found, update index
if(mx_score < ans)
{
mx_score = ans;
mx_scorer = index;
}
// If minimum score is found, update index
if(mn_score > ans)
{
mn_score = ans;
mn_scorer = index;
}
cout << "Enter player's name (done for no more players): ";
cin >> s;
index++;
}
cout << endl;
// Output section
for(int i = 0; i < score.size(); i++)
{
cout << name[i] << " scored " << score[i] << ". ";
}
// Printing winner and loser
cout << name[mn_scorer] << " did the worst by scoring " << score[mn_scorer] << ". ";
cout << name[mx_scorer] << " won the game by scoring " << mx_score << ". ";
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.