(C++) 用STL中的容器实现打分功能

    科技2025-05-24  34

    3.4 案例-评委打分

    3.4.1 案例描述

    有5名选手:选手ABCDE,10个评委分别对每一个选手打分,去除评委打分中的一个最高分和最低分,取平均分。

    3.4.2 实现步骤

    1.创建5名选手,放到vector中 2.遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中 3.sort算法对deque容器中分数排序,去除最高和最低分 4.deque容器遍历一遍,累加总分 5.获取平均分 #include <iostream> #include <string> #include <deque> #include <vector> #include <algorithm> using namespace std; //选手类 class Person { public: Person(string name,int score) { this->m_Name = name; this->m_Score = score; } int m_Score; string m_Name; }; void createPerson(vector<Person> &v) { string nameSeed = "ABCDE"; for (int i = 0; i < 5; i++) { string name = "选手"; name += nameSeed[i]; int score = 0; Person p(name,score); v.push_back(p); } } void setScore(vector<Person> &v) { for(vector<Person>::iterator it = v.begin(); it != v.end(); it++) { deque<int> d; for(int i = 0; i < 10; i++) { int score = rand() % 41 + 60; //60-100的随机数 d.push_back(score); } //排序 sort(d.begin(), d.end()); //去除最低分和最高分 d.pop_back(); d.pop_front(); //取平均分 int sum = 0; for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++) { sum += *dit; } int avg = sum/d.size(); it ->m_Score = avg; } } void showScore(vector<Person> &v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { cout << "姓名:" << it->m_Name << " 平均分:" << it->m_Score << endl; } } int main() { //创建选手 vector<Person> v; createPerson(v); //给5名选手打分 setScore(v); //显示最后得分 showScore(v); system("pause"); return 0; }
    Processed: 0.009, SQL: 8