/*
创建5名选手,存放到vector中;
遍历vector容器,取出来5名选手,执行for循环,把10个评分存到deque容器中;
sort算法对deque中的评分进行排序,去除最高分和最低分;
deque容器遍历一遍,累加总分
获取平均分
*/
#include<iostream>
using namespace std;
#include<algorithm>
#include<string>
#include<vector>
#include<deque>
#include<ctime>//生成随机种子
/*
有五名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除最低分,取平均分
*/
//选手类
class Person
{
public:
Person(string name,int score)
{
this->m_Name=name;
this->m_Score=score;
}
string m_Name;
int m_Score;
};
void createPerson(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);
//将创建的perosn对象 放入容器中
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;
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;//存放选手容器
createPerson(v);
//测试
// for(vector<Person>::iterator it=v.begin();it!=v.end;it++){
// cout<<"姓名:"<<(*it).m_Name<<"分数:"<<(*it).m_Score<<endl
// }
setScore(v);
showScore(v);
system("pause");
return 0;
}
C++案例——评委打分
于 2022-08-16 22:25:36 首次发布