我在編碼專案時遇到了一些麻煩,問題如下。
一個特定的才藝比賽有五名評委,每個評委給每個表演者打分,分數在 0 到 10 之間。允許使用分數分數,例如 8.3。表演者的最終分數是通過去掉收到的最高分和最低分,然后取其余三個分數的平均值來確定的。撰寫使用這種方法計算參賽者分數的程式。
我必須使用以下內容,void getJudgeData()、void calcScore()、double findLowest()、double findHighest()
我的代碼如下
#include <iostream>
using namespace std;
double inputValidation(double);
void getJudgeData(double&);
void calcScore(double, double, double, double, double);
double ifLowest(double, double, double, double, double);
double findLowest(double, double, double, double, double);
double ifHighest(double, double, double, double, double);
double findHighest(double, double, double, double, double);
int main()
{
double score1, score2, score3, score4, score5;
getJudgeData(score1);
getJudgeData(score2);
getJudgeData(score3);
getJudgeData(score4);
getJudgeData(score5);
calcScore(score1, score2, score3, score4, score5);
return 0;
}
double inputValidation(double num)
{
while (!(cin >> num) || (num < 0 || num > 10))
{
cout << "Incorrect Score parameters" << endl;
exit(0);
return 0;
}
return num;
}
void getJudgeData(double& num)
{
cout << "Enter Score: ";
num = inputValidation(num);
}
void calcScore(double num1, double num2, double num3, double num4, double num5)
{
double average, lowest = findLowest(num1, num2, num3, num4, num5), highest = findHighest(num1, num2, num3, num4, num5);
if ((num1 == lowest)||(num5 == highest))
average = (num2 num3 num4) / 3;
else if ((num2 == lowest)||(num4 == highest))
average = (num1 num3 num5) / 3;
else if ((num3 == lowest)||(num3 == highest))
average = (num1 num2 num4 num5) / 3;
else if ((num4 == lowest)||(num2 == highest))
average = (num1 num3 num5) / 3;
else if ((num5 == lowest)||(num1 == highest))
average = (num2 num3 num4) / 3;
cout << "The average is: ";
cout << average << endl;
}
double ifLowest(double num1, double num2, double num3, double num4, double num5)
{
double lowest{};
if (num1 <= num2)
{
if (num1 <= num3)
{
if (num1 <= num4)
{
if (num1 <= num5)
{
lowest = num1;
}
}
}
}
return lowest;
}
double findLowest(double num1, double num2, double num3, double num4, double num5)
{
double smallest;
smallest = ifLowest(num1, num2, num3, num4, num5);
smallest = ifLowest(num2, num3, num4, num5, num1);
smallest = ifLowest(num3, num4, num5, num1, num2);
smallest = ifLowest(num4, num5, num1, num2, num3);
smallest = ifLowest(num5, num1, num2, num3, num4);
return smallest;
}
double ifHighest(double num1, double num2, double num3, double num4, double num5)
{
double highest{};
if (num5 >= num2)
{
if (num5 >= num3)
{
if (num5 >= num4)
{
if (num5 >= num1)
{
highest = num5;
}
}
}
}
return highest;
}
double findHighest(double num1, double num2, double num3, double num4, double num5)
{
double largest;
largest = ifHighest(num1, num2, num3, num4, num5);
largest = ifHighest(num2, num3, num4, num5, num1);
largest = ifHighest(num3, num4, num5, num1, num2);
largest = ifHighest(num4, num5, num1, num2, num3);
largest = ifHighest(num5, num1, num2, num3, num4);
return largest;
}
在 void calcScore 中,平均值給了我一個錯誤,但只有當我嘗試降低最高分時才取平均值
uj5u.com熱心網友回復:
為了解決這個問題,您不需要定義 isLowest() 和 isHighest() 函式。您可以通過比較所有數字直接找到最高和最低數字,而且在您的 calcScore() 函式中,您還沒有涵蓋所有情況。例如,如果 num1 最低,而 num2 最高。這是正確的代碼 -
#include <iostream>
using namespace std;
double inputValidation(double);
void getJudgeData(double &);
void calcScore(double, double, double, double, double);
double findLowest(double, double, double, double, double);
double findHighest(double, double, double, double, double);
int main()
{
double score1, score2, score3, score4, score5;
getJudgeData(score1);
getJudgeData(score2);
getJudgeData(score3);
getJudgeData(score4);
getJudgeData(score5);
calcScore(score1, score2, score3, score4, score5);
return 0;
}
double inputValidation(double num)
{
while (!(cin >> num) || (num < 0 || num > 10))
{
cout << "Incorrect Score parameters" << endl;
exit(0);
return 0;
}
return num;
}
void getJudgeData(double &num)
{
cout << "Enter Score: ";
num = inputValidation(num);
}
void calcScore(double num1, double num2, double num3, double num4, double num5)
{
double average, lowest = findLowest(num1, num2, num3, num4, num5), highest = findHighest(num1, num2, num3, num4, num5);
average = (num1 num2 num3 num4 num5 - lowest - highest) / 3;
cout << "The average is: ";
cout << average << endl;
}
double findLowest(double num1, double num2, double num3, double num4, double num5)
{
double temp[] = {num1, num2, num3, num4, num5};
double smallest = num1;
for (int i = 0; i < 5; i )
{
if (temp[i] < smallest)
{
smallest = temp[i];
}
}
return smallest;
}
double findHighest(double num1, double num2, double num3, double num4, double num5)
{
double temp[] = {num1, num2, num3, num4, num5};
double largest = num1;
for (int i = 0; i < 5; i )
{
if (temp[i] > largest)
{
largest = temp[i];
}
}
return largest;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/511326.html
標籤:C
上一篇:可變引數模板方法特化
