vector和deque容器的運用

vector和deque共同寫的代碼,實現10個購評委對4位選手的打分,並求出每位選手平均分

#include<iostream>
#include<string>
#include<vector>
#include<deque>
#include<time.h>
#include<algorithm>
using namespace std;
class Person {
private:
	string name;
	float averScore;
public:
	Person(string name,float averScore ) {
		this->name = name;
		this->averScore = averScore;
	}
	void setScore(float aver) {
		averScore = aver;
	}
	float getScore() {
		return averScore;
	}
	string getName() {
		return name;
	}
	
};
void creatPerson(vector<Person> &v) {
	
	string name = "ABCD";
	for (int i = 0; i < size(name); i++)
	{
		string name1 = "學生";
		name1 += name[i];
		v.push_back(Person(name1, 0));//初始化學生對象

	}
	

}

void intputInfor(vector<Person>& v) {
	srand((unsigned int)time(NULL));//初始化隨機種子
	for (vector<Person>::iterator iter = v.begin(); iter < v.end(); iter++) {
		deque<int> q;
		
		for (int i = 0; i < 10; i++)//輸入成績
		{
			int  score = rand() % (100 - 1 + 1) + 1;//每位選手的成績 1~100
			q.push_back(score);
			
		}
		
		//個評委打分展示
		cout << "選手" << iter->getName() << "  評委的評分爲: "  << endl;
		for (deque<int>::iterator iter1 = q.begin(); iter1 < q.end(); iter1++) {
			
			cout <<*iter1<<" ";
		}
		cout << endl;
		float sum=0;//總分
		float aver;//平均分
		sort(q.begin(), q.end());//排序
		q.pop_front();//去掉最高分
		q.pop_back();//去掉最低分
		for (size_t i = 0; i < q.size(); i++)
		{
			sum += q[i];
		}
		aver = sum / q.size();

		iter->setScore(aver);//設置平均分


	}
}
void printScore(vector<Person>& v) {
	
	for (vector<Person>::iterator iter = v.begin(); iter < v.end(); iter++) {
		cout << "選手 " << iter->getName() << "  " << "平均分" << iter->getScore() << endl;
	}
};
int main() {
	vector<Person> v;
	creatPerson(v);//實例化選手
	intputInfor(v);//錄入成績
	printScore(v);//輸出成績
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章