评委打分案例(sort 算法排序)
创建5个选手(姓名 得分)10个评委对5个选手进行打分
得分规则:去掉最高分
按得分对5名选手进行排名
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<string>
#include<vector>
#include<deque>
#include<algorithm>
using namespace std;
class Play{
public:
Play(){}
Play(string Name, int score) :mName(Name), mScore(score){}
public:
string mName;
int mScore;
};
//创建选手
void Creat_Play(vector<Play> &v)
{
string s = "ABCDE";
for (int i = 0; i < 5; i++)
{
Play p;
p.mName = "选手";
p.mName += s[i];
p.mScore = 0;
v.push_back(p);
}
}
//打分机制
void Set_Score(vector<Play> &v)
{
for (vector<Play>::iterator it = v.begin(); it != v.end(); it++)
{
deque<int> dscore;
for (int i = 0; i < 10; i++)
{
int score = rand() % 41 + 60;
dscore.push_back(score);
}
sort(dscore.begin(), dscore.end());
dscore.pop_back();
dscore.pop_front();
int meanscore = 0;
for (deque<int>::iterator it1 = dscore.begin(); it1 != dscore.end();it1++)
{
meanscore += (*it1);
}
meanscore = meanscore / dscore.size();
(*it).mScore = meanscore;
}
}
//
bool compare(Play &p1, Play &p2)
{
return p1.mScore > p2.mScore;
}
void Print_Rank(vector<Play> &v)
{
sort(v.begin(),v.end(),compare);//compare 是排序规则
for (vector<Play>::iterator it4 = v.begin(); it4 != v.end(); it4++)
{
cout << "名字" << it4->mName << "分数" << it4->mScore<<endl;
}
}
int main(void)
{
//评委打分案例(sort 算法排序)
//创建5个选手(姓名 得分)10个评委对5个选手进行打分
//得分规则:去掉最高分
//按得分对5名选手进行排名
vector<Play> v;
Creat_Play(v);
Set_Score(v);
Print_Rank(v);
system("pause");
return 0;
}