STL小案例——评委打分(黑马C++中级学习)

本文介绍了一个选手评分系统的实现方法,该系统使用C++编程语言,通过去除最高分和最低分来计算每位选手的平均得分。系统首先创建了五名选手,并为每位选手收集了十位评委的评分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

案例描述:
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除最低分,取平均分。
实现步骤:
1.创建五名选手,放到vector中
2.遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分到deque容器中
3.sort算法对deque容器中分数排序,去除最高分和最低分
4.deque容器遍历一遍,累加总分
5.获取平均分

实现代码:

#include "utils.h"
vector<Person> info_vector_init()
{
	// person_init
	Person p1("选手A", 0);
	Person p2("选手B", 0);
	Person p3("选手C", 0);
	Person p4("选手D", 0);
	Person p5("选手E", 0);

	// put data into vector
	vector<Person> info;
	info.push_back(p1);
	info.push_back(p2);
	info.push_back(p3);
	info.push_back(p4);
	info.push_back(p5);

	return info;
}
int add_sum(const deque<int>& dq)
{
	int sum = 0;
	for (deque<int>::const_iterator item = dq.begin(); item != dq.end();item++)
	{
		sum += *item;
	}
	sum = sum / 8;
	return sum;
}

void Print_Person(vector<Person>& person)
{
	for (vector<Person>::iterator p = person.begin(); p != person.end(); p++)
	{
		cout << "姓名: " << (*p).m_name << "   " << "分数: " << (*p).m_score;
		cout << endl;
	}
}


void judge_score_by_deque(vector<Person>& info)
{
	int score;
	for (vector<Person>::iterator item = info.begin(); item != info.end(); item++)
	{
		deque<int> dq;
		for (int i = 0; i < 10; i++)
		{
			score = rand() % 41 + 60;
			dq.push_back(score);
		}

		sort(dq.begin(), dq.end());

		dq.pop_back();
		dq.pop_front();
		(*item).m_score = add_sum(dq);
	}
	Print_Person(info);
}

int main() {
	vector<Person> infos = info_vector_init();
	judge_score_by_deque(infos);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值