• STL_打分案例


    评委打分案例(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;
    }
    
  • 相关阅读:
    Python
    版本控制
    后台
    前端
    提升权限 关闭系统
    SC命令(windows服务开启/禁用)
    获取当前电脑全部网络连接名字
    x64 win64编译环境下ADO链接Access数据库的问题解决
    Netsh命令-网络禁用开启
    windows主机防护
  • 原文地址:https://www.cnblogs.com/gqw-myblogs/p/14321421.html
Copyright © 2020-2023  润新知