案例要求:

//打分案例(sort算法排序)
//创建5个选手(姓名、得分),十个评委对五个选手进行打分
//得分规则:去除最高分,去除最低分,取出平均分
//按得分对5个选手进行排名

源代码:

//打分案例(sort算法排序)
//创建5个选手(姓名、得分),十个评委对五个选手进行打分
//得分规则:去除最高分,去除最低分,取出平均分
//按得分对5个选手进行排名 #include<iostream>
#include<vector>
#include<deque>
#include<string>
#include<algorithm>
using namespace std; //选手类
class Player
{
public:
Player(){}
Player(string name,int score):mName(name),mScore(score){}
public:
string mName;
int mScore;
}; //创建选手
void CreatPlayer(vector<Player>& v)
{
string name = "ABCDE";
for (int i = ; i < ; i++)
{
Player p;
p.mName = "选手";
p.mName += name[i];
p.mScore = ;
v.push_back(p);
} } //评委打分
void SetScore(vector<Player>& v)
{
for (vector<Player>::iterator it = v.begin(); it != v.end(); it++)
{
//对选手进行打分
deque<int> dScore;
for (int i = ; i < ; i++)
{
int score = rand() % + ;
dScore.push_back(score);
//dScore[i] = rand() % 41 + 60;
}
//对分数进行排序
sort(dScore.begin(), dScore.end());
//去除最高最低分
dScore.pop_front();
dScore.pop_back();
//求平均分
int total = ;
for (deque<int>::iterator dit = dScore.begin(); dit != dScore.end(); dit++)
{
total += (*dit);
}
int avg = total / dScore.size();
//保存分数
(*it).mScore = avg;
}
}
//排序规则(默认从小到大排序)
bool myCompare(Player& p1, Player& p2)
{
return p1.mScore > p2.mScore;
} //选手排名
void PrintRank(vector<Player>& v)
{
//排序
sort(v.begin(), v.end(), myCompare);
//打印
for (vector<Player>::iterator it = v.begin(); it != v.end(); it++)
{
cout << "姓名:" << (*it).mName << ", 成绩:" << (*it).mScore << endl;
}
cout << endl;
} int main()
{
//定义vector保存选手信息
vector<Player> vPlist;
CreatPlayer(vPlist);
SetScore(vPlist);
PrintRank(vPlist);
return ;
}

运行结果:

[代码][deque容器练习]打分案例的更多相关文章

  1. C++ STL 之 deque容器 打分案例(内含sort排序用法)

    #include <iostream> #include <vector> #include <time.h> #include <deque> #in ...

  2. deque容器

    一.deque容器基本概念 deque是“double-ended queue”的缩写,和vector一样,deque也支持随机存取.vector是单向开口的连续性空间,deque则是一种双向开口的连 ...

  3. C++进阶 STL(1) 第一天 [容器,算法,迭代器] string容器 vector容器 deque容器

    课程大纲 02实现基本原理 容器,算法,迭代器 教室:容器 人:元素 教室对于楼:容器 序列式容器: 容器元素在容器中的位置是由进入容器的时间和地点来决定 序列式容器 关联式容器: 教室中 按年龄排座 ...

  4. java基础:数组详解以及应用,评委打分案例实现,数组和随机数综合,附练习案列

    1.数组 1.1 数组介绍 数组就是存储数据长度固定的容器,存储多个数据的数据类型要一致. 1.2 数组的定义格式 1.2.1 第一种格式 数据类型[] 数组名 示例: int[] arr;     ...

  5. 2.4 C++STL deque容器详解

    文章目录 2.4.1 引入 2.4.2 代码示例 2.4.3 代码运行结果 2.4.4 具体案例 总结 2.4.1 引入 deque容器类比vector容器来学习. deque为双向开口容器,见下图. ...

  6. STL学习系列三:Deque容器

    1.Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口上和vector非常 ...

  7. vector,list,deque容器的迭代器简单介绍

    我们知道标准库中的容器有vector,list和deque.另外还有slist,只不过它不是标准容器.而谈到容器,我们不得不知道进行容器一切操作的利器---迭代器.而在了解迭代器之前,我们得先知道每个 ...

  8. STL学习三:deque容器

    1.Deque简介 deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的. deque在接口上和vector非常 ...

  9. 带你深入理解STL之Deque容器

    在介绍STL的deque的容器之前,我们先来总结一下vector和list的优缺点.vector在内存中是分配一段连续的内存空间进行存储,其迭代器采用原生指针即可,因此其支持随机访问和存储,支持下标操 ...

随机推荐

  1. poj 3744 概率dp 快速幂 注意排序 难度:2

    /* Scout YYF I Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 5304   Accepted: 1455 De ...

  2. 有效二叉查找树判断(java实现)

    leetcode 原题 :(即判断二叉树是否为二叉查找树) Given a binary tree, determine if it is a valid binary search tree (BS ...

  3. Nginx笔记02-nginx常用参数配置说明

    nginx的主配置文件是nginx.conf,这里主要针对这个文件进行说明 1.主配置文件nginx.conf   2.nginx配置文件的结构 从上面的配置文件中我们可以总结出nginx配置文件的基 ...

  4. Go安装一些第三方库

    原文链接:https://javasgl.github.io/go-get-golang-x-packages/ 侵权联系删除! go在go get 一些 package时候的会由于众所周知的原因而无 ...

  5. C# Seal用法

    C# Seal用法 sealed的中文意思是密封,故名思义,就是由它修饰的类或方法将不能被继承或是重写. sealed关键字的作用:     在类声明中使用sealed可防止其它类继承此类:在方法声明 ...

  6. myeclipse单步调试

    如何进行myclipse的单步调式与跟踪?希望大虾们详细点,多谢. 打断点,然后运行,进debug试图,按F6执行一行,按F5是钻进去执行 追问 朋友,能详细点吗? 本人是初学 回答 如图 如若成功请 ...

  7. 《Drools7.0.0.Final规则引擎教程》番外实例篇——相同对象and List使用

    前奏 群组(QQ:593177274)交流中有朋友提出一个问题,怎么实现两个相同对象的插入和比较?相信很多朋友也遇到类似的问题,于是抽时间为大家写一段实例代码,后续代码会同步到GitHub中.下面简单 ...

  8. Qt 编译完后指定输出路径

    make install INSTALL_ROOT=/home/hotot/qt4rls

  9. [BZOJ4802]欧拉函数

    bzoj description 给出\(n\),求\(\varphi(n)\).\(n\le10^{18}\) sol \(Pollard\ Rho\),存个代码. code #include< ...

  10. NTP时间服务器的配置

      1.NTP简介NTP(Network Time Protocol,网络时间协议)是用来使网络中的计算机,时间同步的一种协议.NTP服务器利用NTP协议来提供时间同步服务. 2 .环境准备主机名   ...