zoukankan      html  css  js  c++  java
  • 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;
    }
    
  • 相关阅读:
    P5956[POI2017]Podzielno【数学】
    P6672[清华集训2016]你的生命已如风中残烛【结论】
    P5825排列计数【EGF,NTT】
    P3971[TJOI2014]Alice and Bob【贪心】
    P3244[HNOI2015]落忆枫音【dp】
    jquery 选中单选按钮的值
    jquery ajax 详解
    Common Lisp中的car和cdr
    publishing(android)
    Preparing for Release(发布前的准备)
  • 原文地址:https://www.cnblogs.com/gqw-myblogs/p/14321421.html
Copyright © 2011-2022 走看看