




已阅读5页,还剩1页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
三 11. 对参赛结果分数进行处理:参赛选手n人(n1),评委m人(m2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore计算方法为 (1)m9时,去掉一个最高分和一个最低分后另m-2个得分的平均值。 (2)m9时,去掉两个最高分和两个最低分后另m-4个得分的平均值。 假设事先已经建立了text型的数据文件f1.txt,其中依次记录着n个选手的编号(一个正整数)、姓名(一个字符串)以及m个评委给出的得分。 请编制程序,依次从数据文件f1.txt中读入n个选手的有关信息,而后按上述规定方法计算出每一个选手的最后得分,而且往屏幕上以及另一个text型文件f2.txt中同时输出如下形式的结果信息。 假设参赛选手人数n=5,评委人数m=7,磁盘文件f1.txt中的初始数据为: 1 zhangjin 8.8 9.3 7.9 8.7 8.9 9.7 9.2 2 lintao 8.9 8.2 8.6 8.8 8.5 9.1 9.3 3 guojian 8.9 8.4 8.7 8.6 8.6 8.4 8.6 4 maling 7.9 8.3 8.5 8.6 8.5 8.9 8.3 5 liuyifan 9.5 9.1 9.8 9.2 9.0 9.5 8.9 那么,程序执行后,屏幕显示结果以及磁盘文件f2.txt中的结果均应该为: - 参赛号 姓 名 最高分 最低分 累积分 最后得分 - 1 zhangjin 9.7 7.9 44.9 8.98 2 lintao 9.3 8.2 43.9 8.78 3 guojian 8.9 8.4 42.9 8.58 4 maling 8.9 7.9 42.2 8.44 5 liuyifan 9.8 8.9 46.3 9.26 - 思考:可进一步考虑找出比赛的第1至第k名,也在屏幕以及f2.txt中同时输出相关的结果信息(k小于等于n,并规定若多个选手最后得分相同时,则有效分(即已删除原来的最高分后)中最高分高者名次优先)。 源程序如下: #include #include #includeclass Cplayer private: int number;/选手序号 int judge_n;/裁判人数 char*name;/选手姓名 double score20;/选手的所有分数 public: Cplayer(char*a,int n1,int jn,double fen20) / 构造函数,对数据初始化 name=new charstrlen(a)+1; strcpy(name,a); /姓名赋值 number=n1; /序号 judge_n=jn; /裁判数 for(int i=0;ijudge_n;i+) scorei=feni; for(i=judge_n;i20;i+)/分数赋值 scorei=0; void set_name(char*a)/控制名字的输入和更改 name=new charstrlen(a)+1; strcpy(name,a); void set_score(double fen120) /分数的输入和更改 for(int i=0;ijudge_n;i+) scorei=fen1i; void show_score()/显示选手资料 coutnumber setw(10)name ; for(int i=0;ijudge_n;i+) cout.width (5); coutscorei; coutendl; friend ofstream & operator (ofstream & base,Cplayer & a); /友元函数,运算符重载 /向指定文件输入选手的资料 ;/类定义完毕. class Cresult / 定义另一个类。 private: int number; /选手序号 int judge_n; /裁判人数 char*name; /选手姓名 double score20; /选手分数的集合 public: Cresult(char*a,int n1,int jn,double fen20) name=new charstrlen(a)+1; strcpy(name,a); /姓名赋值 number=n1;/选手序号 judge_n=jn;/裁判数 for(int i=0;ijudge_n;i+) scorei=feni; for(i=judge_n;i20;i+)/分数赋值 scorei=0; double min_score()/最低分 double min_score=score0; for(int i=0;i=scorei) min_score=scorei; return min_score; double max_score()/最高分 double max_score=score0; for(int i=0;ijudge_n;i+) if(max_score=scorei) max_score=scorei; return max_score; double get_totalscore() /获取总分,所有分数的和 double totalscore=0; for(int i=0;ijudge_n;i+) totalscore+=scorei; return totalscore; double get_lastscore();/获取最后的得分 double get_tscore()/选手的累积分数 double tscore; if(judge_n=9) tscore=get_lastscore()*(judge_n-4); return tscore; void show_result()/结果输出 cout number setw(10)name max_score() min_score() get_tscore() get_lastscore()endl; friend ofstream & operator (ofstream & score,Cresult & a); /文件操作,结果的输入 ;/类定义完毕 double Cresult:get_lastscore() double lastscore; int a,b; if(judge_n=9)/裁判大于9时 double min_score2,max_score2; for(int i=0;ijudge_n;i+) if(scorei=min_score() a=i; for( i=0,scorea=20.0;i=scorei) min_score2=scorei; scorea=min_score();/求出第二低的分数min_score2 for( i=0;ijudge_n;i+) if(scorei=max_score() b=i; for( i=0,scoreb=1.0;ijudge_n;i+) if(max_score2=scorei) max_score2=scorei; else max_score2=scorei; scoreb=max_score();/求出第二高的分数 lastscore=(get_totalscore()-min_score()-max_score()-min_score2-max_score2)/(judge_n-4); /最后得分为总分除去二个高分和二个低分后的平均分 return lastscore;/返回最后得分 ofstream & operator(ofstream & base,Cplayer & a)/运算符重载 basea.number ; for(int i=0;ia.judge_n;i+) base a.scorei; baseendl; return base; /向指定文件输入选手的资料 ofstream & operator (ofstream & score,Cresult & a) /文件操作,结果的输入 score a.number setw(-5) a.max_score() a.min_score(); score a.get_tscore() a.get_lastscore()endl; return score; void main() double p120=8.8,9.3,7.9,8.7,8.9,9.7,9.2;/选手1得分 double p220=8.9,8.2,8.6,8.8,8.5,9.1,9.3;/选手2得分 double p320=8.9,8.4,8.7,8.6,8.6,8.4,8.6;/选手3得分 double p420=7.9,8.3,8.5,8.6,8.5,8.9,8.3;/选手4得分 double p520=9.5,9.1,9.8,9.2,9.0,9.5,8.9;/选手5得分 ofstream outfile1; outfile1.open(D:f1.txt,ios:out);/保存到D盘 ofstream outfile2; outfile2.open(D:f2.txt,ios:out);/保存到D盘 Cplayer player1(zhangjin,1,7,p1);/调用构造函数 Cplayer player2(lintao,2,7,p2);/调用构造函数 Cplayer player3(guojian,3,7,p3);/调用构造函数 Cplayer player4(maling,4,7,p4);/调用构造函数 Cplayer player5(liuyifan,5,7,p5);/调用构造函数 player1.show_score();/显示选手1信息 player2.show_score();/显示选手2信息 player3.show_score();/显示选手3信息 player4.show_score();/显示选手4信息 player5.show_score();/显示选手5信息 cout-endl;/向显示屏输出 cout参赛号 姓 名 最高分 最低分 累积分 最后得分endl;/向显示屏输出 cout-endl;/向显示屏输出 outfile2-endl;/向文件输出 outfile2 参赛号 姓 名 最高分 最低分 累积分 最后得分endl;/向文件输出 outfile2-endl;/向文件输出 outfile1player1player2player3player4player5;/向文件1输出5个选手的信息 Cresult result1(zhangjin,1,7,p1);/调用构造函数 Cresult result2(lintao,2,7,p2);/调用构造函数 Cresult result3(guojian,3,7,p3);/调用构造函数 Cresult result4(maling,4,7,p4);/调用构造函数 Cresult result5(liuyifan,5,7,p5);/调用构造函数 result1.show
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业互联网平台TEE在智能工厂设备能耗管理中的应用报告
- 2025-2030中国滑车及提升机产业前景动态及投资盈利预测报告
- 2025-2030中国渔业机械制造行业营销动态研究及投资效益规划报告
- 国防计量考试题库及答案2025
- 铆工初级试题(有答案)
- 2025-2030深远海风电运维污染防控体系构建与装备需求预测报告
- 2025-2030海外矿山机械市场拓展策略与区域机会分析报告
- 湖南公务员真题2025
- 邯郸市网格员考试真题2024
- 2025-2030核电乏燃料后处理技术路线比较及商业化运营可行性分析
- 旋风分离器效率计算
- 温硝化制硝基苯装置的改进
- 保教知识与能力幼儿园课件
- 财务部半年度述职汇报PPT模板
- 药品种类清单
- 公共基础知识(社区工作者基础知识)试题(附答案)
- GB/T 37915-2019社区商业设施设置与功能要求
- GB/T 31298-2014TC4钛合金厚板
- 《电业安全工作规程》
- 卡西欧gw5600说明书
- 中兴NGN培训教材 MSG9000结构原理介绍课件
评论
0/150
提交评论