C++ vector+deque综合练习

一、概述

  案例:有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除评委中最高分,去除评委中最低分,取平均分。

二、示例图片

三、示例代码

#include <iostream>
#include <vector>
#include <string>
#include <deque>
#include <algorithm>
#include <ctime>

///案例:有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除评委中最高分,去除评委中最低分,取平均分。

using namespace std;

/**
 * 创建选手
 * */
class Player{
public:
	Player(string name,int score){
		this->m_name = name;
		this->m_score = score;
	}
	string m_name;
	int m_score;
};

void createPlayer(vector<Player> &v){
	string nameSeed = "ABCDE";
	for(int i=0;i<5;i++){
		string name = "player is: ";
		name+=nameSeed[i];
		int score = 0;
		//初始化选手
		Player player(name,score);
		v.push_back(player);
	}
}

void setScore(vector<Player> &v){
	for(vector<Player>::iterator it= v.begin();it!=v.end();it++){
		deque<int> d;//存放评委打分的容器
		for(int i=0;i<10;i++){
			int socre = rand()%41+60;
			d.push_back(socre);
		}
		//排序
		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<Player> &v){
	for(vector<Player>::iterator it=v.begin();it!=v.end();it++){
		cout <<"name:"<<it->m_name << " avg:"<< it->m_score<<endl;
	}
}


int main(int argc, char const *argv[])
{
	//设置随机种子
	srand((unsigned int)time(NULL));
	//创建5名选手
	vector<Player> v;
	createPlayer(v);
	//打分
	setScore(v);
	//平均分
	showScore(v);

	return 0;
}

  

原文地址:https://www.cnblogs.com/tony-yang-flutter/p/15428107.html