黑马B站C++教程作业练习 《评委打分》
项目要求:
创建若干选手,并用10名评委对其进行打分,去除一个最高分&最低分,取其平均分。
项目思路
创建一个选手类,使用vector容器进行存储,并使用deque容器进行打分,因为deque容器可以对头尾进行操作故使用该容器。
pop_back();
pop_front();
代码部分👇
#include <iostream> #include <vector> #include <deque> #include <ctime> #include <algorithm> using namespace std; class Person { public: Person(string name, int score):m_name(name), m_score(score) {} string m_name; int m_score; }; void setPerson(vector<Person>&v) { string seedname = "ABCDEF"; for (int i = 0; i < 6; i++) { string name = "选手"; name += seedname[i]; int score = 0; Person P(name, score); v.push_back(P); } } void setScore(vector<Person>& v, deque<int>& d) { srand((unsigned int)time(NULL)); for (vector<Person>::iterator vit = v.begin(); vit != v.end(); vit++) { for (int i = 0; i < 10; i++) { int score = rand() % 71 + 100; 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()); vit->m_score = avg; } } void VectorPrint(const vector<Person>& v)//使用const关键字避免修该其中内容。 { for (vector<Person>::const_iterator vit = v.begin(); vit != v.end(); vit++) { cout << vit->m_name << " " << vit->m_score << endl; } } int main() { vector<Person>v; deque<int>d; setPerson(v); setScore(v, d); VectorPrint(v); system("pause"); return 0; }