A particular talent competition has 5 judges, each of whom awards a score betwee
ID: 3814195 • Letter: A
Question
A particular talent competition has 5 judges, each of whom awards a score between
0 and 10 to each performer. Fractional scores, such as 8.3, are allowed. A
performer’s final score is determined by dropping the highest and lowest score
received, then averaging the 3 remaining scores. Write a program that uses these
rules to calculate and display a contestant’s score. It should include the
following functions:
• void getJudgeData() should ask the user for a judge’s score, store it in a
reference parameter variable, and validate it. This function should be
called by main once for each of the 5 judges.
• double calcScore() should calculate and return the average of the 3 scores
that remain after dropping the highest and lowest scores the performer
received. This function should be called just once by main, and should be
passed the 5 scores.
The last two functions, described below, should be called by calcScore, which uses
the returned information to determine which of the scores to drop.
• int findLowest() should find and return the lowest of the 5 scores passed to
it.
• int findHighest() should find and return the highest of the 5 scores passed
to it.
Input Validation: Do not accept judge scores lower than 0 or higher than 10.
Implement the functions exactly as specified, other than correction of the following error:
findLowest and findHighest should have return type double, not int.
Explanation / Answer
void getJudgeData(double& data){
cin>>data;
while (data<0 || data>10) { //if data is invalide ask to re-enter data
cout<<"Invalid Re-enter: ";
cin>>data; //read data
}
}
int findLowest(double a, double b, double c, double d, double e) { //find the lowest value
double lowest;
if (a<b) //first compare a with b
lowest = a; //assign lowest with a value which ever is lowest between a and b
else
lowest = b;
if (c<lowest) //and then keep comparing lowest with remaining c, d and e
lowest = c;
if (d<lowest)
lowest = d;
if (e<lowest)
lowest = e;
return lowest;
}
int findHighest(double a, double b, double c, double d, double e) { //have similar logic as findLowest function
double highest;
if (a>b)
highest = a;
else
highest = b;
if (c>highest)
highest = c;
if (d>highest)
highest = d;
if (e>highest)
highest = e;
return highest;
}
double calcScore(double a, double b, double c, double d, double e) {
double lowest;
if (a<b)
lowest = a;
else
lowest = b;
if (c<lowest)
lowest = c;
if (d<lowest)
lowest = d;
if (e<lowest)
lowest = e;
double highest;
if (a>b)
highest = a;
else
highest = b;
if (c>highest)
highest = c;
if (d>highest)
highest = d;
if (e>highest)
highest = e;
double sum = a + b + c + d + e - highest - lowest; //add all then substract highest and lowest values
double avg = sum/3; //calculate avg
return avg;
}
I have kept the solution as simple as possible to make your life easy. I have also commented the code for easy understanding. If you have any trouble understanding the code, feel free to comment below. I shall be glad to help you.
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.