C++比赛结果处理
对参赛结果分数进行处理:参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore为去掉一个最高分和一个最低分后另m-2个得分的平均值。
假设事先已经建立了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,并规定若多个选手最后得分相同时,f1.txt中初始数据在前者名次优先)。
(一)需求分析:
对参赛结果分数进行处理:参赛选手n人(n>1),评委m人(m>2),评委给每一选手打一个分数score(分数score为小于等于10的一个正实数)。选手的最后得分lastScore为去掉一个最高分和一个最低分后另m-2个得分的平均值。
(二)概要分析:
从磁盘中f1.txt读入数据,然后程序处理数据,在屏幕上输出结果同时写入磁盘f2.txt中去。
(三)详细分析:
判断有多少位裁判和有多少选手但是f1.txt的数据格式要和实验指导书的数据格式相同,否则可能出错。
fin.open("f1.txt");当查找的时候扫描文件如果找到可以匹配的参数的时候,就进行输出数据。
输出的时候也是一个一个的数据地输出的。把数据读入每个选手的分数数组中去list[m].score[j]
然后就是进行数据处理阶段,程序中已经可以说明在这里就不在多做叙述了。
(四)调试分析:
在调试程序的时候开始的时候没有出现错误,能够正常运行。后来不小心把f1.txt的数据格式给改变了,出现了不应该的数据。输出结果错误。
(五)用户使用说明:
使用者可以按照例子的数据格式输入数据进行比赛数据处理,这里没有特别的要求只有一个选手的数据要在一行,还有数据一定是实数。因为需要用到小数点来判断有多少为裁判打分。
(辣)测试结果:
(七)源程序:见上传程序30.cpp
(八)编程体会:
这一题比较麻烦一点,有关文件操作需要一系列的操作,一不小心就有可能出错。数据多需要明白如何去处理这些数据不然就有可能出错。格式的输出占了一部分。不仅要输出到屏幕还要输出到磁盘文件中。1826