Stlケース演習-裁判官の得点(ベクトル、両端キュー)

#include <iostream>
using namespace std;
#include <string>
#include <vector>
#include <deque>
#include <algorithm>
#include <ctime>
/*
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分和最低分,取平均分 ,要求使用vector、deque、string容器
*/
//创建选手类
class Person
{
    
    
	public:
		Person(string name, int score){
    
    
			this -> m_Name = name;
			this -> m_Score = score; 
		}
		string m_Name;
		int m_Score;
};
//将选手放入vector容器中
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);
		//将创建的person对象,放到选手容器中
		v.push_back(p); 
	}
}
//将评委打分放入deque容器,使用rand随机打分,并计算
void setScore(vector<Person> &v)
{
    
    
	srand((unsigned int)time(NULL));	
	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);
		}
		//排序,去掉最大最小值 
		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;
	}
}

int main()
{
    
    
	//创建5名选手
	vector<Person> v;
	createPerson(v);
	setScore(v);
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it ++)
	{
    
    
		cout << "姓名: " << (*it).m_Name << "\t分数: " << (*it).m_Score << endl; 
	}
	system("pause");
	return 0;
 } 

おすすめ

転載: blog.csdn.net/Fighting_gua_biu/article/details/113752489