案例描述:
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除最低分,取平均分。
实现步骤:
1.创建五名选手,放到vector中
2.遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分到deque容器中
3.sort算法对deque容器中分数排序,去除最高分和最低分
4.deque容器遍历一遍,累加总分
5.获取平均分
实现代码:
#include "utils.h"
vector<Person> info_vector_init()
{
// person_init
Person p1("选手A", 0);
Person p2("选手B", 0);
Person p3("选手C", 0);
Person p4("选手D", 0);
Person p5("选手E", 0);
// put data into vector
vector<Person> info;
info.push_back(p1);
info.push_back(p2);
info.push_back(p3);
info.push_back(p4);
info.push_back(p5);
return info;
}
int add_sum(const deque<int>& dq)
{
int sum = 0;
for (deque<int>::const_iterator item = dq.begin(); item != dq.end();item++)
{
sum += *item;
}
sum = sum / 8;
return sum;
}
void Print_Person(vector<Person>& person)
{
for (vector<Person>::iterator p = person.begin(); p != person.end(); p++)
{
cout << "姓名: " << (*p).m_name << " " << "分数: " << (*p).m_score;
cout << endl;
}
}
void judge_score_by_deque(vector<Person>& info)
{
int score;
for (vector<Person>::iterator item = info.begin(); item != info.end(); item++)
{
deque<int> dq;
for (int i = 0; i < 10; i++)
{
score = rand() % 41 + 60;
dq.push_back(score);
}
sort(dq.begin(), dq.end());
dq.pop_back();
dq.pop_front();
(*item).m_score = add_sum(dq);
}
Print_Person(info);
}
int main() {
vector<Person> infos = info_vector_init();
judge_score_by_deque(infos);
return 0;
}