C++编程编程C++C++小练习-stl容器应用
Beyondstl容器小练习-运用vector容器与deque容器
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分。
1. 创建五名选手,放到vector中
2. 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中**
3. sort算法对deque容器中分数排序,pop_back pop_front去除最高和最低分
4. deque容器遍历一遍,累加分数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
| #include <iostream> #include <vector> #include <deque> #include <random>
using namespace std;
class Person { private: string name; deque<int> deq; int average; public: int getAverage() const { return average; }
void setAverage(int average) { Person::average = average; }
const string &getName() const { return name; }
void setName(const string &name) { Person::name = name; }
const deque<int> &getDeq() const { return deq; }
void pushBackDeque(int num) { deq.push_back(num); }
void eraseDeque(int index) { deq.erase(deq.begin() + index); }
void setDeq(const deque<int> &deq) { Person::deq = deq; }
Person() {}
Person(const string &name, const deque<int> &deq, const int &average) : name(name), deq(deq), average(average) {}
~Person() {} };
int randomNum() { random_device rd; mt19937 gen(rd()); uniform_int_distribution<> dis(0, 10); return dis(gen); }
void mark(Person &p) { for (int i = 0; i < 10; i++) { p.pushBackDeque(randomNum()); } }
void removeExtremum(Person &p) { int minIndex = 0; int maxIndex = 0; for (int i = 1; i < 10; i++) { minIndex = p.getDeq().at(minIndex) > p.getDeq().at(i) ? i : minIndex; maxIndex = p.getDeq().at(maxIndex)< p.getDeq().at(i) ? i : maxIndex; } if (maxIndex > minIndex) { p.eraseDeque(maxIndex); p.eraseDeque(minIndex); } else { p.eraseDeque(minIndex); p.eraseDeque(maxIndex); } }
int average(Person &p) { int sum = 0; for (int i = 0; i < 8; i++) { sum += p.getDeq().at(i); } return sum / 8; }
vector<Person> createVector() { vector<Person> v; for (int i = 0; i < 5; i++) { cout << "请输入名字:" << endl; string name; cin >> name; Person p; p.setName(name); mark(p); removeExtremum(p); p.setAverage(average(p)); v.push_back(p); } return v; }
void printVector(const vector<Person> &v) { for (int i = 0; i < 5; i++) { cout << v.at(i).getName() << "的成绩为:"; for (int j = 0; j < 8; j++) { cout << v.at(i).getDeq().at(j) << " "; } cout << "平均成绩为:" << v.at(i).getAverage() << endl; } }
void test() { printVector(createVector()); }
int main() { test(); return 0; }
|