[deque容器练习]打分案例
案例要求:
//打分案例(sort算法排序)
//创建5个选手(姓名、得分),十个评委对五个选手进行打分
//得分规则:去除最高分,去除最低分,取出平均分
//按得分对5个选手进行排名
源代码:
//打分案例(sort算法排序) //创建5个选手(姓名、得分),十个评委对五个选手进行打分 //得分规则:去除最高分,去除最低分,取出平均分 //按得分对5个选手进行排名 #include<iostream> #include<vector> #include<deque> #include<string> #include<algorithm> using namespace std; //选手类 class Player { public: Player(){} Player(string name,int score):mName(name),mScore(score){} public: string mName; int mScore; }; //创建选手 void CreatPlayer(vector<Player>& v) { string name = "ABCDE"; for (int i = 0; i < 5; i++) { Player p; p.mName = "选手"; p.mName += name[i]; p.mScore = 0; v.push_back(p); } } //评委打分 void SetScore(vector<Player>& v) { for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) { //对选手进行打分 deque<int> dScore; for (int i = 0; i < 10; i++) { int score = rand() % 41 + 60; dScore.push_back(score); //dScore[i] = rand() % 41 + 60; } //对分数进行排序 sort(dScore.begin(), dScore.end()); //去除最高最低分 dScore.pop_front(); dScore.pop_back(); //求平均分 int total = 0; for (deque<int>::iterator dit = dScore.begin(); dit != dScore.end(); dit++) { total += (*dit); } int avg = total / dScore.size(); //保存分数 (*it).mScore = avg; } } //排序规则(默认从小到大排序) bool myCompare(Player& p1, Player& p2) { return p1.mScore > p2.mScore; } //选手排名 void PrintRank(vector<Player>& v) { //排序 sort(v.begin(), v.end(), myCompare); //打印 for (vector<Player>::iterator it = v.begin(); it != v.end(); it++) { cout << "姓名:" << (*it).mName << ", 成绩:" << (*it).mScore << endl; } cout << endl; } int main() { //定义vector保存选手信息 vector<Player> vPlist; CreatPlayer(vPlist); SetScore(vPlist); PrintRank(vPlist); return 0; }
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异