STL_打分案例


prtyaa
prtyaa 2023-12-26 19:24:49 50020 赞同 0 反对 0
分类: 资源
评委打分案例(sort 算法排序) 创建 5 个选手(姓名,得分) , 10 个评委对 5 个选手进行打分 得分规则:去除最高分,去除最低分,取出平均分 按得分对 5 名选手进行排名
 #define _CRT_SECURE_NO_WARNINGS
 #define PLAYER_NUMBER 5
 #include<iostream>
 #include<string>
 #include<vector>
 #include<deque>
 #include<algorithm>
 #include<stdlib.h>
 #include<time.h>
 using namespace std;
 
 //选手类
 class Player {
 public:
     Player() {};
     Player(string name, int score){
         this->name = name;
         this->score = score;
     }
     string getName() {
         return this->name;
     }
     void setName(string name) {
         this->name = name;
     }
     int getScore() {
         return this->score;
     }
     void setScore(int score) {
         this->score = score;
     }
 private:
     string name;
     int score;
 };
 
 void creat_player(vector<Player> &player_vector,int number) {
     string name_seed = "ABCDE";
     for (int i = 0; i < number; i++) {
         Player player;
         string tmp = name_seed.substr(i,1);
         player.setName("选手"+tmp);
         player.setScore(0);
         player_vector.push_back(player);
     }
 }
 
 void set_score(vector<Player>& player_vector) {
     
     srand(time(nullptr));
 
     for (vector<Player>::iterator it=player_vector.begin();it!=player_vector.end();it++) {
         
         deque<int> player_score_list;
         
         for (int i = 0;i<10;i++) {
             int score = rand() % 41 + 60;
             player_score_list.push_back(score);
         }
         
         sort(player_score_list.begin(),player_score_list.end());
         
         player_score_list.pop_back();
         player_score_list.pop_front();
 
         int total_score = 0;
         for (deque<int>::iterator dit = player_score_list.begin(); dit != player_score_list.end(); dit++) {
             total_score += (*dit);
         }
         int avg_score = total_score / player_score_list.size();
 
         (*it).setScore(avg_score);
     }
 }
 
 bool mycompare(Player& p1, Player& p2) {
     return p1.getScore() > p2.getScore();
 }
 
 void print_rank(vector<Player>& player_vector) {
 
     sort(player_vector.begin(),player_vector.end(),mycompare);
 
     for (vector<Player>::iterator it = player_vector.begin(); it != player_vector.end(); it++) {
 
         cout << "姓名:"<<(*it).getName()<<"  得分:"<<(*it).getScore()<<endl;
     }
 }
 
 
 int main()
 {
     vector<Player> player_vector;
     creat_player(player_vector,PLAYER_NUMBER);
     set_score(player_vector);
     print_rank(player_vector);
     return 0;
 }

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  129
统信桌面专业版【全盘安装UOS系统】介绍  125
银河麒麟桌面操作系统安装佳能打印机驱动方法  118
银河麒麟桌面操作系统 V10-SP1用户密码修改  106
麒麟系统连接打印机常见问题及解决方法  14
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
麒麟系统连接打印机常见问题及解决方法 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益210.13元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!