有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。
- 创建五名选手,放到vector中
- 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
- sort算法对deque容器中分数排序,pop_back pop_front去除最高和最低分
- deque容器遍历一遍,累加分数,累加分数/d.size() //5. person.score = 平均分
#include<iostream>
#include<vector>
#include<algorithm>
#include<deque>
#include<string>
using namespace std;
//构造选手类
class person
{
public:
person(string n,int a):name(n),score(a)
{}
string getname()
{
return this->name;
}
void getscore(int a)
{
this->score = a;
}
int showscore()
{
return this->score;
}
private:
string name;
int score;
};
//打印deque容器
void myprint(const deque<int> &p)
{
for (deque<int>::const_iterator i = p.begin(); i != p.end(); i++)
{
cout<<*i<<" ";
}
cout<<endl;
}
//排序序列
bool mycompare(int v1,int v2)
{
return v1 > v2;//100 > 10==> 100 10 从大到小排序
}
//打印选手成绩
void mypringperson(vector<person>s)
{
for(vector<person>::iterator i = s.begin();i != s.end();i++)
{
cout<<i->getname()<<"的评分为:"<<" "<<i->showscore()<<endl;
}
}
void test()
{
deque<int> p;
vector<person>s;
person p1("张三",0);
person p2("李四",0);
person p3("王五",0);
person p4("赵六",0);
person p5("周七",0);
//导入vector容器中
s.push_back(p1);
s.push_back(p2);
s.push_back(p3);
s.push_back(p4);
s.push_back(p5);
int val;//评委打分
int num;//总分
int avage;//平均分
for(vector<person>::iterator i = s.begin();i != s.end();i++)
{
p.clear();//清空deque容器
cout<<"请给"<<i->getname()<<"输入评分:"<<endl;
for (int i = 0; i < 10; i++)
{
cin>>val;
p.push_back(val);
}
//sort 排序 从小到大
sort(p.begin(),p.end());
//去掉高低分
p.pop_back();
p.pop_front();
//获取总分
num = 0;
for (int j = 0; j < p.size(); j++)
{
num +=p[j];
}
//获得平均分
avage = num/p.size();
i->getscore(avage);
}
//打印结果
mypringperson(s);
}
void main()
{
test();
}