Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

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 entered

Explanation / 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;

}