案例:5名选手,10个评委分别对他们打分(去除最高分,最低分,取平均值)
步骤:
1.创建5名选手,放到vector容器中
2.遍历vector容器,for循环10个评委打分,存放到deque容器中
3.sort算法排序,去除最高分,最低分(deque)
4.deque容器遍历,累加总分
代码:
#include<iostream>
using namespace std;
#include<string>
#include<vector>
#include<deque>
#include<algorithm>
#include<ctime>
class Person
{
public:
Person(string name, int score)
{
this->m_Name = name;
this->m_Score = score;
}
public:
string m_Name;
int m_Score;
};
void createPerson(vector<Person>& vec)
{
string nameSeed = "ABCDEF";
for (int i = 0; i < 5; i++)
{
string name = "选手";
name += nameSeed[i];
int score = 0;
Person p(name, score);
vec.push_back(p);
}
}
void setScore(vector<Person>& vec)
{
for (vector<Person>::iterator it = vec.begin(); it != vec.end(); it++)
{
deque<int>deq;
for (int i = 0; i < 10; i++)
{
int score = rand() % 41 + 60;
deq.push_back(score);
}
//测试
//cout << it->m_Name <<" " << it->m_Score << endl;
//for (deque<int>::iterator dit = deq.begin(); dit != deq.end(); dit++)
//{
// cout << *dit << " ";
//}
//cout << endl;
sort(deq.begin(), deq.end());
deq.pop_front();
deq.pop_back();
int sum = 0;
for (deque<int>::iterator dit = deq.begin(); dit != deq.end(); dit++)
{
sum += (*dit);
}
int avg = sum / deq.size();
(*it).m_Score = avg;
}
}
void printPerson(vector<Person>& vec)
{
for (vector<Person>::iterator it = vec.begin(); it != vec.end(); it++)
{
cout << (*it).m_Name << " 得分:" << (*it).m_Score << endl;
}
}
int main()
{
//随机种子
srand((unsigned int)time(NULL));
//创建容器
vector<Person>vec;
//创建选手
createPerson(vec);
//给选手打分
setScore(vec);
//打印选手
printPerson(vec);
system("pause");
return 0;
}