#include <iostream>
#include <vector>
#include <algorithm>
#include <iomanip>
using namespace std;
// 计算选手的最终得分
double calculateScore(vector<double>& scores) {
// 如果评委人数少于3人,无法去掉最高分和最低分
if (scores.size() <= 2) {
cerr << "错误:评委人数必须大于2人!" << endl;
return -1;
}
// 排序分数,便于去掉最高分和最低分
sort(scores.begin(), scores.end());
// 计算总分(去掉第一个最低分和最后一个最高分)
double total = 0;
for (int i = 1; i < scores.size() - 1; i++) {
total += scores[i];
}
// 计算平均分
return total / (scores.size() - 2);
}
int main() {
int n;
cout << "请输入评委人数:";
cin >> n;
// 验证评委人数是否合法
if (n <= 2) {
cerr << "评委人数必须大于2人!" << endl;
return 1;
}
vector<double> scores;
double score;
// 输入每个评委的分数
for (int i = 0; i < n; i++) {
cout << "请输入第" << i + 1 << "位评委的分数(0-10):";
cin >> score;
// 验证分数是否在有效范围内
if (score < 0 || score > 10) {
cerr << "分数必须在0到10之间!" << endl;
i--; // 重新输入当前评委的分数
continue;
}
scores.push_back(score);
}
// 计算并输出最终得分
double finalScore = calculateScore(scores);
if (finalScore >= 0) {
cout << fixed << setprecision(2); // 保留两位小数
cout << "选手的最终得分是:" << finalScore << endl;
}
return 0;
}
/**************************************************************
Problem: 1168
User: mc002
Language: C++
Result: Wrong Answer
****************************************************************/