C++_模板案例

有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。

  • 创建五名选手,放到vector中

  • 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中

  • sort算法对deque容器中分数排序,去除最高和最低分

  • deque容器遍历一遍,累加总分

  • 获取平均分

    // 评委打分
    
    // 选手类
    class Person {
    public:
    	Person(string name, int age) {
    		this->m_name = name;
    		this->m_point = age;
    	}
    
    	string m_name;
    	int m_point;
    };
    
    // 创建选手信息
    void createPerson(vector<Person>& v) {
    	string nameSeed = "ABCDE";
    	for (int i = 0; i < 5; i++) {
    		string name = "选手";
    		name += nameSeed[i];
    
    		int point = 0;
    		
    		Person p(name, point);  // 创建选手
    		v.push_back(p);			// 放到选手容器
    	}
    }
    
    // 打分
    void setPoint(vector<Person>& v) {
    	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
    		
    		// 把分数放到容器里
    		deque<int> d;
    		
    		// 往容器里写分数
    		for (int i = 0; i < 10; i++) {
    			int point = rand() % 41 + 60;
    			d.push_back(point);
    		}
    		
    		// 对分数进行排序
    		sort(d.begin(), d.end());
    		
    		// 去除最高分和最低分
    		d.pop_back();
    		d.pop_front();
    
    		// 算平均分
    		int sum = 0, avg = 0;
    		for (deque<int>::iterator id = d.begin(); id != d.end(); id++) {
    			sum += *id;
    		}
    		avg = sum / d.size();
    
    		// 把分数赋值给选手
    		it->m_point = avg;
    	}
    }
    
    // 展示分数
    void printPoint(vector<Person>& v) {
    	for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) {
    		cout << it->m_name<< "   " << it->m_point << endl;
    	}
    }
    
    int main() {
    
    	// 随机数种子
    	srand((unsigned int)time(NULL));
    
    	// 创建选手容器
    	vector<Person> v;
    	createPerson(v);
    
    	// 打分
    	setPoint(v);
    
    	// 展示分数
    	printPoint(v);
    
    	system("pause");
    	return 0;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值