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;
}
结果:
直接运行就行,所有打分都是随机生成的
还没有评论,来说两句吧...