Introduction Some number of teams are participating in a race. You are not told how many teams are participating but you do know that: • • Each team has a name, which is one of the uppercase letters A-Z. No two teams have the same name, so there are a maximum number of 26 teams. Each team has the same number of members. No two runners cross the finish line at the same time-i.e. there are no ties. At the end of the race we can write the results as a string of characters indicating the order in which runners crossed the finish line. For example: ZZAZAA We can see there were two teams: A and Z. Team A's runners finished in 34, 5 and 6 place. Team Z's runners finished in 1", 2 and 4th place. Scoring the race Each runner is assigned a score equal to their finishing place. In the example above team Z's runners achieved scores of 1, 2 and 4. Team A's runners scores were 3, 5, and 6 respectively. The team's score is the sum of the members score divided by the number of people on the team. So team A's score is (3+5+6)/3-14/3-4.66 and team Z's score is (1+2+4)/3-7/3-2.33 The Problem Write a program to score races as described above. Input Your program will ask the user to input a string of uppercase characters indicating the outcome of a race. Output Your program will output: • Z The number of teams. The number of runners on a team. The names of the teams-in alphabetical order-together with the team score. The name and score of the winning team. So for the example above the program will print: There are 2 teams. Each team has 3 runners. Team Score A 4.66 2.33 The winning team is team Z with a score of 2.33. Your program should loop asking for input processing the data until the user enters "done". Your program should detect the error condition where teams do not have the same number of runners. In that case it should print an error message, and resume by requesting the next input.
continue this already existing code to complete the problem in the picture
#include<iostream>
#include<iomanip>
#include<climits>
using namespace std;
int main() {
string input=""; // here, input will be taken till user enters "done"
while(input!="done")
{
//flag to indicate if number of runners are not same
int flag=0;
cout<<"Enter outcome of race"<<endl;
char teams[300]={0};
cin>>input;
if(input!="done")
{
for(int i=0;i<input.length();i++)
{ teams[input[i]]++;
}
//checking if number of runners are same in each team or not
int freq=teams['A'];
for(int i=0;i<input.length();i++)
{
if(teams[input[i]]!=freq)
{
//if number of runners in each team are not same flag will become 1
flag=1;
break;
}
}
if(flag==1)
{
//print a message if number of runners are not same
cout<<"Number of runners are not same in all teams"<<endl<<endl;
continue;
}
int num_teams=0;
for(int i='A';i<='Z';i++)
{
if(teams[i]>0)
num_teams++;
}
//print the information about number of teams and runners in each team
cout<<endl;
cout<<"There are "<<num_teams<<" teams"<<endl<<endl;
cout<<"Each team has "<<freq<<" runners"<<endl<<endl;
cout<<"Team Score"<<endl;
float winning_score=INT_MAX;
char winning_team;
//find score of each team based on position of runners in the input
for(int i='A';i<='Z';i++)
{
if(teams[i]>0)
{
float score=0;
cout<<(char)i<<" ";
for(int j=0;j<input.length();j++)
{
if(input[j]==(char)i)
{
score+=j+1;
}
}
//dividing the score by number of runners in each team
score=score/freq;
cout<<setw(8)<<fixed<<setprecision(2)<<score<<endl;
//deciding the winning score and team
if(score<winning_score)
{
winning_score=score;
winning_team=(char)i;
}
}
}
//printing the winning score and team
cout<<endl<<"The winning team is team "<<winning_team<<" with a score of "<<winning_score<<endl;
cout<<endl;
}
}
}
Trending now
This is a popular solution!
Step by step
Solved in 4 steps with 7 images