歌手大奖赛共有10位评委,为每位选手打分(double型)。预赛部分歌手的分数,为去掉1个最高分、1个最低分后其余8个分数的平均值;决赛部分歌手的分数,为去掉2个最高分、2个最低分后其余6个分数的平均值。通过键盘输入10位评委的打分,以及当前处于哪个阶段(预赛部分用1表示,决赛部分用2表示)。主函数中,只负责输入数据、调用分数计算函数、输出结果,评分计算部分编写独立函数完成。
时间: 2023-04-21 10:01:14 浏览: 140
以下是评分计算部分的独立函数:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
double calculateScore(double scores[], int n, int stage) {
double sum = ;
if (stage == 1) { // 预赛
sort(scores, scores + n);
for (int i = 1; i < n - 1; i++) {
sum += scores[i];
}
return sum / (n - 2);
} else if (stage == 2) { // 决赛
sort(scores, scores + n);
for (int i = 2; i < n - 2; i++) {
sum += scores[i];
}
return sum / (n - 4);
} else {
return -1; // 非法的阶段参数
}
}
```
主函数中,可以这样调用上述函数:
```c++
int main() {
double scores[10];
int stage;
cout << "请输入10位评委的打分:" << endl;
for (int i = ; i < 10; i++) {
cin >> scores[i];
}
cout << "请输入当前阶段(1表示预赛,2表示决赛):" << endl;
cin >> stage;
double result = calculateScore(scores, 10, stage);
if (result == -1) {
cout << "非法的阶段参数" << endl;
} else {
cout << "选手的得分为:" << result << endl;
}
return ;
}
```
阅读全文