#include<iostream>
#include<unistd.h>
#include<string>
#include<vector>
#include<deque>
#include<ctime>
#include<algorithm>//标准算法的头文件
using namespace std;
//案例描述
//选手ABCDE,10个评委分别对每一名选手,去除最高分,去除最低分,取平均分
//思路
//5名选手-->vector
//遍历vector,取出每一名选手,执行for循环,把打分放入deque容器
//根据sort排序deque
//计算得分
//最大区别 我结果论 老师 以选手作为出发点,思考针对选手的一系列属性和行为
//我的做法
void test01()
{
vector<char> xs;
xs.push_back('a');
xs.push_back('b');
xs.push_back('c');
xs.push_back('d');
xs.push_back('e');
for(int i=0;i<xs.size();i++)
{
deque<int> d;
int num=0;
int zf = 0;
cout << xs[i] << " score: "<<endl;
for(int j=0;j<10;j++)
{
cout << j<<": ";
cin >> num;
d.push_back(num);
cout << endl;
}
sort(d.begin(),d.end());
for(deque<int>::iterator it = (d.begin()+1);it!=(d.end()-1);it++)
{
zf+=*it;
}
cout << xs[i]<<"the last score is: "<<zf/(8)<<endl;
}
}
//老师的做法
//创建选手类
class person
{
public:
person(string name,int score)
{
m_name = name;
m_score = score;
}
string m_name;
int m_score;
};
void createperson(vector<person>&p)
{
string nameSeed = "ABCDE";
for(int i = 0; i< 5;i++)
{
string name = "选手";
name += nameSeed[i];
int score = 0;
person p1(name,score);
//将创建的对象放入容器中
p.push_back(p1);
}
}
//打分
void setScore(vector<person>&v)
{
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; // 60~100 rand()%40 范围是0-39 所以要 rand()%41;
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;
}
}
void test02()
{
//创建五名选手
vector<person> p;
createperson(p);
//测试
for(vector<person>::iterator it = p.begin();it!=p.end();it++)
{
cout << (*it).m_name << (*it).m_score<<endl;
}
setScore(p);
//测试
for(vector<person>::iterator it = p.begin();it!=p.end();it++)
{
cout << (*it).m_name << (*it).m_score<<endl;
}
}
int main(void)
{
//随机数种子
srand((unsigned int)time(NULL));
test02();
pause();
return 0;
}
C++基础--STL基础- 案例一
最新推荐文章于 2025-01-05 22:21:19 发布
本文介绍了一种评分系统的实现方式,包括使用C++编程语言、容器(如vector和deque)、算法(如sort)来帮助去除最高和最低分,并计算平均得分。通过两种不同的方法实现:一种是直接使用容器和迭代器,另一种则是定义选手类进行操作。
416

被折叠的 条评论
为什么被折叠?



