在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
1 #include <iostream> 2 #include <vector> 3 #include <time.h> 4 #include <deque> 5 #include <algorithm> 6 using namespace std; 7 8 // 评委打分案例(sort 算法排序) 9 // 创建 5 个选手(姓名,得分) , 10 个评委对 5 个选手进行打分 10 // 得分规则:去除最高分,去除最低分,取出平均分 11 // 按得分对 5 名选手进行排名 12 13 // 选手类 14 class Player 15 { 16 public: 17 Player(){} 18 Player(string name, int score) :mName(name), mScore(score){} 19 public: 20 string mName; 21 int mScore; 22 }; 23 24 // 创建选手 25 void CreatePlayer(vector<Player>& v) 26 { 27 string nameSeed = "ABCDE"; 28 for (int i = 0; i < 5; i++) 29 { 30 Player p; 31 p.mName = "选手"; 32 p.mName += nameSeed.at(i); 33 p.mScore = 0; 34 v.push_back(p); 35 } 36 } 37 38 // 下面for_each函数的回调函数 39 void PrintScore(int val) 40 { 41 cout << val << " "; 42 } 43 44 // 打分 45 void SetScore(vector<Player>& p) 46 { 47 srand(time(NULL)); 48 for (vector<Player>::iterator it = p.begin(); it != p.end(); it++) 49 { 50 // 给当前学生进行打分 51 deque<int> dScore; 52 for (int i = 0; i < 10; i++) 53 { 54 int score = rand() % 41 + 60; 55 cout << score << " "; 56 dScore.push_back(score); 57 } 58 cout << endl; 59 60 // 对分数进行排序 默认从小到大 61 sort(dScore.begin(), dScore.end()); 62 // 打印排序后的分数 63 for_each(dScore.begin(), dScore.end(), PrintScore); 64 cout << endl; 65 66 // 去除最高分 去除最低分 67 dScore.pop_back(); 68 dScore.pop_front(); 69 // 求平均分 70 // 总分 71 int totalScore = 0; 72 for (deque<int>::iterator it = dScore.begin(); it != dScore.end(); it++) 73 { 74 totalScore += *(it); 75 } 76 // 平均分 77 int avgScore = totalScore / dScore.size(); 78 // 保存分数 79 (*it).mScore = avgScore; 80 cout << "-------------------------" << endl; 81 } 82 83 } 84 85 // 排序规则(下面sort函数的回调函数) 86 bool myCompare(Player& p1, Player& p2) 87 { 88 return p1.mScore > p2.mScore; 89 } 90 91 // 根据选手分数排名 sort默认从小到大排序 希望是从大到小排序 92 void Print_Rank(vector<Player> v) 93 { 94 // 排序 95 sort(v.begin(), v.end(), myCompare); 96 // 打印 97 for (int i = 0; i < v.size(); i++) 98 { 99 cout << "姓名:" << v.at(i).mName.c_str() << " 得分:" << v.at(i).mScore << endl; 100 } 101 } 102 103 int main() 104 { 105 vector<Player> p; 106 CreatePlayer(p); 107 SetScore(p); 108 Print_Rank(p); 109 getchar(); 110 return 0; 111 }
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论