C++课程设计:参赛结果评分与排名算法实现

4星 · 超过85%的资源 需积分: 10 85 下载量 27 浏览量 更新于2024-07-27 收藏 258KB DOC 举报
在C++课程设计中,你需要编写一个程序来处理参赛结果,该程序的主要任务是对n位参赛选手(n>1)由m位评委(m>2)给出的分数进行计算和整理。评委们给每位选手打分,分数范围是0到10之间的正实数。选手的最后得分规则根据评委数量m有所不同: 1. 当评委数量m小于9时: - 去掉一个最高分和一个最低分,然后取剩下的m-2个分数的平均值作为最后得分。 2. 当评委数量m大于或等于9时: - 去掉两个最高分和两个最低分,再取剩下的m-4个分数的平均值。 为了实现这个功能,你需要读取存储在文本文件f1.txt中的数据,该文件包含选手编号、姓名和评委分数。你将编写代码实现从文件中读取数据,对每个选手的得分进行处理,计算最后得分,并将结果输出到屏幕上和另一个文本文件f2.txt中。 示例数据中,参赛选手包括张jin、lin Tao、guo Jian、ma Ling和liu Yifan,评委给出了他们的评分。经过处理后,选手们的最后得分会根据上述规则得出,并按照要求展示在屏幕上和f2.txt中。 程序的难点在于如何有效地处理得分的最高分和最低分,考虑到可能存在两种情况:一是仅去掉最高分和最低分,二是同时去掉最高分、次高分、最低分和次低分。为了解决这个问题,你可以采用以下策略: - 首先,将所有评委的分数放入一个数组score[M]中。 - 对数组进行排序,这样可以轻松找到最高分和最低分的位置。 - 根据评委数量m决定去除哪些分数:如果m<9,只需删除score[0]和score[M-1];如果m≥9,删除score[0]、score[1]、score[M-1]和score[M-2]。 - 计算剩余分数的平均值,作为选手的最后得分。 在程序执行过程中,还考虑了额外的功能,即找出比赛的前k名选手(k≤n),在这种情况下,不仅考虑最后得分,还会考虑有效分(即在排除最高分后的得分)中最高分的排名优先。 总结来说,这个C++课程设计项目需要你熟练运用数据结构和算法,尤其是排序和数组操作,以实现评委分数的有效处理和排名计算。同时,还需要处理文件输入/输出,确保程序能够正确读取和保存数据。
2012-11-27 上传
C++课程设计题目,包括1、输出10至99之间每位数的乘积大于每位数的和的数,例如对于数字12,有1*22+7,故输出该数。 2、求任意n个数中的最大数和最小数:先输入一个正整数n(个数),而后再输入任意n个实数,找出这n个数中的最大数及最小数并显示出来。3、对两个有序数组进行合并:设有如下数组A、B,并假设两个数组的元素都已经有序(从大到小降序排列)。编程序,合并A、B数组形成一个新的数组C,并使C的元素仍有序(从大到小降序排列)。 int A[10]={123, 86,80, 49,33,15,7,0,-1,-3}; int B[10]={100,64,51,50,27,19,15,12,5,2}; 4、有一个分数序列:1/2,1/3,1/4,1/5,1/6,1/7,……,编写函数求序列前n项之和,要求在主程序中提示用户输入整数n,并判断所输入数是否合法(大于1为合法),如果合法则调用求和函数并输出结果。 5、计算两个日期之间的间隔天数:从键盘输入两个日期(如以year1,month1,day1以及year2,month2,day2的方式来输入它们),而后计算出这两个日期的间隔天数并在屏幕上显示出结果。 要求编制具有如下原型的函数difs2Date: long GetDayDifference(int y1,int m1,int d1,int y2,int m2,int d2); 并在主函数中调用向屏幕上输出计算结果。7、声明并定义一个日期类CDate,其中数据成员m_iYear,m_iMonth,m_iDay,分别表示年、月、日,成员函数SetDate()用来设置年、月、日,成员函数IsLeapYear()用来判断当前的年份是否为闰年,构造函数带有默认形参值,可接收外部参数对m_iYear, m_iMonth, m_iDay进行初始化,另要求编写测试程序,定义一个CDate类对象,将其日期设置为2005年1月1日, 调用成员函数IsLeapYear()判断该年份是否为闰年,并输出判断结果. 说明:闰年的年份可以被4整除而不能被100整除,或者能被400整除. 8、编写一个程序计算两个给定长方形的面积,其中在设计类成员函数GetTotalArea()(用于计算两个长方形的总面积)时使用对象作为参数。 9、设计一个时间类Time,包括3个数据成员,时(h)、分(m)、秒(s),另外包括存取各数据成员和设置时间的成员函数,按上、下午各12小时或按24小时输出时间的成员函数,以及默认构造函数,默认时间值为0时0分0秒。 10、编写一个程序,输入3个学生的英语和计算机成绩,并按总分从高到低排序(要求设计一个学生类Student)。 11. 求解一元二次方程。 一元二次方程的定义为: ax2+bx+c=0 (1)如果b2 -4ac>0,方程有两个不同的实根,分别是: (2)如果b2 -4ac< 0,方程没有实根,但有虚根; (3)如果b2 -4ac= 0,方程有一个实根。 请你编写一个程序,使其能求出多个二次方程的根。该程序要询问用户是否想继续解下一个方程。用户输入1来继续,输入其它数字,则终止程序。程序要求用户输入a,b和c,然后根据前面的条件计算,并输出答案。 要求:使用类实现, (1) a,b,c为该类的私有成员变量; (2) 求根的实现为该类的成员函数,形式为: //函数返回值:实根的个数; //参数:x- 用以返回实根值的数组; int CalResult(double x[]); (3) 该类还包含有参构造函数、析构函数。