运用类与对象所学内容定义一个选手记分类 实现歌手信息输入 评委评分输入 求最高分最低分以及去掉最高分 最低分后的平均分等功能C++
时间: 2024-10-19 07:09:11 浏览: 28
在C++中,你可以创建一个名为`MusicContest`的类来表示音乐比赛的情况,包含选手、歌手信息和评委评分相关的功能。下面是一个简单的实现示例:
```cpp
#include <iostream>
#include <vector>
#include <algorithm> // 包含min和max函数
class Singer {
public:
std::string name;
int score;
// 构造函数
Singer(const std::string& name, int initialScore) : name(name), score(initialScore) {}
void display() const {
std::cout << "歌手:" << name << ", 评分:" << score << std::endl;
}
};
class MusicContest {
private:
std::vector<Singer> contestants; // 存储选手数组
int totalScore = 0; // 总分数
double averageScore;
public:
void addSinger(Singer singer) {
contestants.push_back(singer);
totalScore += singer.score;
}
void inputScores() {
for (auto& contestant : contestants) {
std::cin >> contestant.name >> contestant.score;
}
}
void calculateStats() {
if (contestants.empty()) return;
auto maxScore = *std::max_element(contestants.begin(), contestants.end(), [](const auto &a, const auto &b) {return a.score < b.score;}); // 找到最高分
auto minScore = *std::min_element(contestants.begin(), contestants.end()); // 找到最低分
std::cout << "最高分:" << maxScore.score << ", 最低分:" << minScore.score << std::endl;
totalScore -= maxScore.score - minScore.score; // 去掉最高分和最低分
averageScore = static_cast<double>(totalScore) / (contestants.size() - 2); // 新平均分计算(假设去掉两个极端值)
std::cout << "去除了最高分和最低分后的平均分:" << averageScore << std::endl;
}
};
int main() {
MusicContest contest;
contest.inputScores();
contest.calculateStats();
return 0;
}
```
在这个例子中,我们首先定义了`Singer`类来存储歌手信息,并实现了一个`MusicContest`类来管理选手列表、输入得分并计算统计结果。在`main`函数中创建一个`MusicContest`实例,接收用户输入的歌手名和评分,然后计算并显示结果。
阅读全文