题目:有名选手,10个评委分别对没一名选手打分,除掉一个最高分,一个最低分,去平均分
1.创建5名选手,放到vector中
2.遍历vector容器,取出每一个选手,执行for循环,可以把10个评分打分存到deque容器中
3.sort算法对deque容器中分数排序,pop_back和pop_front去除最高分和最低分
4.deque容器遍历一遍,累加分数,累加后的分数/size
5.person.score =平均分
#include <vector>
#include <deque>
#include <algorithm>
class Person
{
public:
string mname;
float m_ave_score;
deque<int> m_score;
public:
Person(string name,float score)
{
mname = name;
m_ave_score = score;
m_score = deque<int>(10, 0); // 必须要初始化
}
};
void creatPerson( vector<Person> &All_person, Person new_person)//这里必须要加引用,否则运行完就被释放了
{
All_person.push_back(new_person);
}
void PrintAllPerson(vector<Person> All_person) // 这里加不加引用无所谓,只是打印而已
{
int length = 0;
length = All_person.size();
cout << length<<endl;
for(int i=0;i<length;i++)
{ cout << "studnet" << i << " ";
cout << All_person[i].m_ave_score << endl;
}
}
void give_score(vector<Person> &All_person)
{
int length = 0;
length = All_person.size();
for(int i=0;i<length;i++)
{
for (int n = 0; n<10;n++)
{
All_person[i].m_score[n] = rand()%41+60;
cout << All_person[i].m_score[n] << " ";
}
cout << endl;
}
}
void delHighLow(vector<Person> &All_person)
{
int length = 0;
length = All_person.size();
for(int i=0;i<length;i++)
{
sort(All_person[i].m_score.begin(),All_person[i].m_score.end());
All_person[i].m_score.pop_back();
All_person[i].m_score.pop_front();
}
for(int i=0;i<length;i++)
{
for (int n = 0; n<All_person[i].m_score.size();n++)
{
cout << All_person[i].m_score[n] << " ";
}
cout << endl;
}
}
void calave(vector<Person> &All_person)
{
int length = 0;
length = All_person.size();
for(int i=0;i<length;i++)
{
int total = 0;
for(int n =0; n<8;n++)
{
total = total+All_person[i].m_score[n];
}
All_person[i].m_ave_score = total/8;
cout <<All_person[i].m_ave_score<<endl;
}
}
void test05()
{
vector<Person> All_person;
Person student_A("student_A",0.0);
Person student_B("student_b",0.0);
creatPerson(All_person,student_A);
creatPerson(All_person,student_B);
give_score(All_person);
delHighLow(All_person);
calave(All_person);
// PrintAllPerson(All_person);
}