有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; }