一维数组实验题:大奖赛现场统分。已知某大奖赛有n个选手参赛,m(m>2)个评委为参赛选手评分(最高10分,最低0分)。统分规则为:在每个选手的m个得分中,去掉一个最高分和一个最低分后,取平均分作为该选手的最后得分。要求编程实现: (1)根据n个选手的最后得分,从高到低输出选手的得分名次表,以确定获奖名单; (2)根据各选手的最后得分与各评委给该选手所评分数的差距,对每个评委评分的准确性和评分水准给出一个定量的评价,每位评委的评分方法:(10 -(评委对选手x的评分 - x的得分)^2 的累加和),从高到低
时间: 2023-05-01 19:05:22 浏览: 659
这道题目要求实现一个大奖赛现场统分的算法。已知某大奖赛有n个选手参赛,评委会为参赛选手评价分数(最高10分,最低0分),规则为在每个选手的m(m>2)个得分中,去掉一个最高分和一个最低分,然后求剩下分数的平均数作为该选手的得分。此题要求编程实现两个功能:
1. 根据n个选手的得分,从高到低输出得分名次表,以确保获奖名次的正确性;
2. 根据各评委对该选手的评分数的差距,确定一个定量的评价分数,作为该选手的最终得分。
对于第二个功能,每位评委的评分准确性和评分水准不同,因此需要采用一定的评分公式对不同评委的分数差异进行修正,具体的评分公式为:(10-(评委对选手的评分-x的得分)^2的累加和)。
解决该题目的算法伪代码如下:
{输入n个选手的数据}
for i:=1 to n do {求出每个选手得分的平均值}
{去掉最高分和最低分}
m:=the number of scores of the player i;
sum:=the sum of all scores of the player i;
max:=the max score of the player i;
min:=the min score of the player i;
average score:= (sum - max - min) / (m - 2);
{实现功能1:排序输出名次表}
for i:=1 to n do {排序}
for j:=i+1 to n do
if (average score of the player j > average score of the player i) then
{交换位置}
swap player i and player j;
for i:=1 to n do {输出}
output i-th player's average score;
{实现功能2:计算最终评分得分}
for each player i do
{计算每位评委的评分差异}
for each score of player i do
s:=this score;
f:=average score of player i;
se:=score error of this judge;
ss:=standard deviation of scores of the player i;
x:=(s-f)/(ss*se);
{根据评分公式计算该选手最终评分得分}
the final score of player i:= sum((10 - (x)^2));
阅读全文