C++进阶STL-容器的综合例子

题目:
//5个选手,10个评委
//10个评委给每个选手打分,去掉最高分和最低分,再取平均值就是最终的得分
//最后再给每个选手按分数排序



#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;



class Player
{
public:	
	Player(string name,int score):m_score(score),m_name(name)
	{

	}

	int m_score;
	string m_name;
};

//构造选手
void SetPlayer(vector<Player> & player)
{
	string str1 = "ABCDE";
	for (int i = 0; i < 5; i++)
	{		
		string str2 = "Player";
		str2 +=str1[i];
		Player p(str2, 0);   //PlayerA  PlayerB......
		player.push_back(p);
	}
}


// 打分
void SetScore(vector<Player> & player)
{
	for (vector<Player>::iterator it = player.begin(); it != player.end(); it++)
	{
		deque<int> deq_s;
		for (int j = 0; j < 10; j++)  //10个评委打分
		{
			int scorexx = rand() % 41 + 60;   //60-100
			deq_s.push_back(scorexx);
		}
		
		sort(deq_s.begin(), deq_s.end());  //排序

		deq_s.pop_back();             //去掉最高分和最低分
		deq_s.pop_front();

		int sum=0;
		for (deque<int>::iterator itd = deq_s.begin(); itd != deq_s.end(); itd++)
		{
			 sum += (*itd);
		}

		int average=sum / deq_s.size(); //求平均值

		(*it).m_score = average;   //将最后的得分赋值给每个选手
	}


}

bool mycompar(Player& p1, Player& p2) //从小到到
{
	return p1.m_score < p2.m_score;

}


//排序
void SortPlayer(vector<Player>& player)
{
	sort(player.begin(), player.end(), mycompar);
}




void print(vector<Player>& player)
{
	for (vector<Player>::iterator it = player.begin(); it != player.end(); it++)
	{
		cout << "Name:" << (*it).m_name << "    " << "Scores:" << (*it).m_score << endl;
	}
}

int main()
{
	vector<Player> player;
	SetPlayer(player);
	SetScore(player);
	SortPlayer(player);
	print(player);
    return 0;
}

结果:
直接运行就行,所有打分都是随机生成的
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/zzyczzyc/article/details/82935467