C++研发 泛型编程 阶段程序 【评委打分】

这篇博客介绍了如何利用C++编程,通过创建Person类表示选手,使用vector和deque容器存储和处理评委打分,计算每名选手去掉最高分和最低分后的平均分。代码中展示了创建选手、打分、计算平均分和显示分数的过程,强调了STL容器和算法在程序复用性上的优势。
摘要由CSDN通过智能技术生成

一、说明

共有ABCDE五名选手,十名评委分别对其打分;

每名选手分别去掉其最高分和最低分,算出平均分。

二、思路

先建立一个类:选手,选手属性有:

姓名和分数。

首先可以创建一个vector容器,里面存放五个人的信息;

然后将五个人的分数分别放到一个deque容器中,

再对其进行排序,删除头元素和尾元素,

即可算出平均分。

三、代码

main函数:

int main()
{
	//随机数种子
	srand((unsigned)time(NULL));
	//创建选手容器
	vector<Person> v;
	createPerson(v);
	//打分
	setScore(v);
	//展示分数
	showScore(v);

}

Person类:

class Person
{
public:
	string name;
	int score;
public:
	Person(string name, int score)
	{
		this->name = name;
		this->score = score;
	}
};

创建选手组:

void createPerson(vector<Person>& v)
{
	string nameSeed = "ABCDE";
	for (int i = 0; i < 5; i++)
	{
		string name = "选手";
		name += nameSeed[i];
		int score = 0;
		Person p(name, score);
		v.push_back(p);
	}
}

这里巧妙地运用了string的字符串追加技巧。

打分:

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;
			d.push_back(score);
		}
		cout << "姓名:" << it->name << " 打分:";
		for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++)
		{
			cout << *dit << " ";
		}
		cout << endl;
		sort(d.begin(), d.end());
		d.pop_front();
		d.pop_back();
		//取平均分
		int sum = 0;
		for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++)
		{
			sum += *dit;
		}
		int avg = sum / d.size();
		it->score = avg;
	}
}

展示分数:

void showScore(vector<Person>& v)
{
	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << "姓名:" << it->name << " 分数:" << it->score << endl;
	}
}

运行截图:

四、总结

vector容器存放类,deque容器来对数据进行操作,二者结合真的很好用,并且STL容器结合算法大大提高了程序复用性。妙啊!但作为程序员,还是需要深剖一下底层代码,不能做调包侠。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值