实现:用vector 和deque容器实现一个简单打分案例
规则:有5名选手:选手ABCDE,10个评委分别对每一名选手打分,
去除最高分,去除中最低分,取平均分。
#include<iostream>
#include<deque>
#include<vector>
#include<algorithm>
#include<string>
using namespace std;
//1. 创建五名选手,放到vector中
//2. 遍历vector容器,取出来每一个选手,执行for循环,
//可以把10个评分 打分存到deque容器中
//3. sort算法对deque容器中分数排序,pop_back pop_front去除最高和最 低分
//4. deque容器遍历一遍,累加分数,累加分数/d.size()
class Player {
public:
Player() {}
Player(string name, int score) :mname(name), mscore(score) {}
public:
string mname;
int mscore;
};
//创建选手
void create_Player(vector<Player>& v) {
string nameSeed = "ABCDE";
for (int i = 0; i < size(nameSeed); i++) {
Player p;
p.mname = "选手";
p.mname += nameSeed[i];
p.mscore = 0;
v.push_back(p);
}
}
//打分
void set_Score(vector<Player>& v) {
for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) {
//当前学生
deque<int> de;
//打分
for (int i = 0; i < 10; i++) {
int scoreDe = rand() % 41 + 60;
de.push_front(scoreDe);
}
sort(de.begin(),de.end());
de.pop_front();//去掉最小,最高分
de.pop_front();//
//平均分
int total = 0;
for (deque<int>::iterator itt = de.begin(); itt != de.end();itt++) {
total += (*itt);
}
float average= total / de.size();
//保存分数
(*it).mscore = average;
}
}
bool cmp(Player& p1, Player& p2) {
return p1.mscore > p2.mscore;
}
//排名
void print_Rank(vector<Player>& v) {
//
sort(v.begin(), v.end(), cmp);
//
for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) {
cout << "选手:" << (*it).mname << "得分:" <<(*it).mscore<< endl;;
}
}
int main() {
//定义vector保存选手信息
vector<Player> pp;
create_Player(pp);
set_Score(pp);
print_Rank(pp);
return 0;
}