案例:评委打分
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分
步骤:
-
创建五名选手,放到vector中
-
遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
-
sort算法对deque容器中分数排序,去除最高和最低分
-
deque容器遍历一遍,累加总分
-
获取平均分
#include<iostream> using namespace std; #include<vector> #include<deque> #include<algorithm> #include <string> class Person{ public: string m_Name;//姓名 int m_Score;//平均分 Person(string name,int score){ this->m_Name=name; this->m_Score=score; } }; void creatPerson(vector<Person>&v){ string nameSeed="ABCDE"; for(int i=0;i<5;i++){ string name="选手"; name+=nameSeed[i]; int score=0; Person p(name,score); //将创建的person对象 放入到容器中 v.push_back(p); } } //打分 void setScore(vector<Person>& v){ for(vector<Person>::iterator it=v.begin();it!=v.end();it++){ //将评委的分数 放入到deque容器中 deque<int>d; for(int i=0;i<10;i++){ int score=rand()%41+60;//60-100 d.push_back(score); } // cout<<"选手:"<<it->m_Name<<"打分:"<<endl; // for(deque<int>::iterator dit=d.begin();dit!=d.end();dit++){ // cout<<*dit<<" "; // } // cout<<endl; //排序 sort(d.begin(),d.end()); //去除最高分和最低分 d.pop_back(); d.pop_front(); int sum=0; //取平均分 for(deque<int>::iterator dit=d.begin();dit!=d.end();dit++){ sum+=*dit;//累加每位评委的分数 } int avg=sum/d.size(); //将平均分 赋值给选手身上 it->m_Score=avg; } } void showScore(vector<Person>&v){ for(vector<Person>::iterator it=v.begin();it!=v.end();it++){ cout<<"姓名:"<<(*it).m_Name<<"分数:"<<(*it).m_Score<<endl; } } int main (){ //随机数种子 srand((unsigned int)time(NULL)); //1.创建5名选手 vector<Person>v; creatPerson(v); setScore(v); showScore(v); // //测试 // for(vector<Person>::iterator it=v.begin();it!=v.end();it++){ // cout<<"姓名:"<<(*it).m_Name<<"分数:"<<(*it).m_Score<<endl;; // } //2.给5名选手打分 //3.显示最后得分 return 0; }