-
Notifications
You must be signed in to change notification settings - Fork 0
/
STL案例 - 给选手打分
140 lines (115 loc) · 2.55 KB
/
STL案例 - 给选手打分
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
#define _CRT_SECURE_NO_WARNINGS 1
#include<vector>
#include<deque>
#include<algorithm>
#include<string>
#include<stdio.h>
#include<iostream>
#include<ctime>
using namespace std;
//案列 - 5名选手abcd,10各评委分别对每一名选手打分,去除评委最高分,去除评委最低分,取平均分
//
// 实现步骤
// 1.创建5名选手,放到vector中
// 2.遍历vector容器,取出每一个选手,执行for循环,可以把10个评分打分到deque容器中
// 3.sort算法对deque容器中分数排序,去除最高和最低分
// 4.deque容器遍历一遍,累计总分
// 5.获取平均分
//
//选手类
class Person
{
public:
Person(string name, int score);
~Person();
//private:
string m_Name;//姓名
int m_Score;//平均分
};
Person::Person(string name, int score)
{
this->m_Name = name;
this->m_Score = score;
}
Person::~Person()
{
}
void createPerson(vector<Person>& v)
{
string nameSeed = "abcde";
for (int i = 0; i < 5; i++)
{
string name = "选手";
name += nameSeed[i];
int score = 0;
Person p(name, score);
//创建的对象放到容器中
v.push_back(p);
}
}
//打分
void setScore(vector<Person>& v)
{
for (vector<Person>::iterator it = v.begin(); it < v.end(); it++)
{
//将评委的分数放入到deque容器中
deque<int>d;
for (int i = 0; i < 10; i++)
{
int score = rand() % 41 + 60;
d.push_back(score);
}
//测试看一下打的分
//cout << "选手 = " << it->m_Name << "打分 = " << endl;
//for (deque<int>::iterator dit = d.begin(); dit < d.end(); dit++)
//{
// cout << *dit << " ";
//}
//cout << endl;
//先排序后平均分
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();
//将平均分赋值给选手上
it->m_Score = avg;
}
}
//打印
void showScore(vector<Person>& v)
{
for (vector<Person>::iterator it = v.begin(); it < v.end(); it++)
{
cout << "姓名 = " << it->m_Name << "\t平均分 = " << (*it).m_Score << endl;
}
}
void test01()
{
//创建5名选手
vector<Person> v;//存放5名选手
createPerson(v);
//测试
//for (vector<Person>::iterator it = v.begin(); it < v.end(); it++)
//{
// cout << "姓名 = " << (*it).m_Name << "\t分数" << it->m_Score << endl;
//}
//给5名选手打分
setScore(v);
//显示最后得分
showScore(v);
}
int main()
{
//随机数种子 - 时间戳
srand((unsigned int)time(NULL));
test01();
system("pause");
return 0;
}