问题提出:
某大奖赛有n个选手参赛,m(m>2)个评委为依次参赛的选手评判打分:最高10分,最低0分。同分规则:每个选手所得的m个得分中,去掉一个最高分,去掉一个最低分,然后平均为该选手的最后得分。
根据n个选手的最后得分从高到低排出名次表,以便确定获奖名单。
最后,根据各选手的最后得分与各评委给该选手所评分的差距给各个评委的评分准确性一个定量的评价。
1.说明:
(1)、数据结构;
根据需要设置6个数组:
sh(i)为第i个选手的编号,
f(i,j)为第j个评委给第i个选手的评分,
sf(i)为第i个选手的最后得分,
z(i)为评委给第i个选手评分与其最后得分的最大差距,
ph(j)为第j个评委的编号,
pf(j)为第j个评委的得分,
对n个参赛选手设置i循环(1~n),对m个评委设置j循环(1~m)。
(2)、对选手的评分操作;
1)、第i个选手上场,输入编号sh(i),
2)、在j循环中依次输入m个得分f(i,j),每一个f(i,j)累加到sf(i)中,
3)、比较,若f(i,j)> max,则max=f(i,j);若f(i,j)< min,则min=f(i,j),
4)、去掉一个最高分max,去掉一个最低分min,第i个选手最后得分为:sf(i)=(sf(i)-max-min)/(m-2),
5)、根据n个选手的最后得分sf(1),sf(2),…,sf(n)从高到低排序,打印参赛选手的名次表,
(3)、对评委的评分操作;
评委给选手评分存在误差(f(i,j)!=sf(i))是正常的,也是允许的。但如果某个评委给每个选手的评分与各选手的最后得分都相差很多,说明该评委的评分有失水准。
1)、给评委的评分标准,
为与选手的评分习惯相统一,定义评委的最高得分为10分(满分),此时该评委的每次评分均与选手的最后得分相一致;评委的最低分为5分(不及格),此时该评委的每次评分与选手的最后得分之差均为最大值z(i)。
2)、均方根误差,
均方误差是各数据偏离真实值的距离平方的平均数,亦即误差平方和的平均数,它的开放叫做均方根误差。
计算最大值z(i)的平方和的平均数的开方值:
c=sqrt(∑z(i)^2/n)
根据均方根误差与以上定义计算其评分值转换量:
pf(j)=10-sqrt(∑(f(i,j)-sf(i))^2/n)/c*5
其中∑是从1到n的求和。以所得的pf(j)(理论上最高可达10分,最低也可达5分)作为各个评委的定量评价,pf(j)高的评委其评判水平高。
3)、打印评委的评分值从高分到低分的名次表,作为评委评分的定量依据。
2.程序设计:
#include
#include
void main()
{
int i,j,n,m,u,sh[40],ph[40];
double a,b,c,max,min,uf,sf[40],pf[40],z[40],f[40][20];
printf("请输入选手个数(1f[i][j])
min=f[i][j];
}
printf("\n 去掉一个最高分:%.3f",max);
printf("\n 去掉一个最低分:%.3f",min);
sf[i]=(sf[i][j]-max-min)/(m-2);
a=max-sf[i];
b=sf[i]-min;
z[i]=(a>b)?a:b;
printf("\n 编号为%d号选手",sh[i]);
printf(" 最后得分为:%.3f",sf[i]);
}
for(c=0;i=1;i<=n;i++)
{
pf[j]=0;
for(i=1;i<=n;i++)
pf[j]+=(f[i][j]-sf[i][j])*(f[i][j]-sf[i][j]);
pf[j]=10.0-sqrt(pf[j]/n)/c*5;
printf("\n 第%d号评委得分为:%.3f",j,pf[j]);
}
for(i=1;i<=n;i++)
for(j=1+1;j<=m;j++)
if(sf[i]
3.程序运行示例及其注意事项:
输入n=7,m=5(即有7个选手,5个评委)。
选手按抽签的先后出场参赛,输入选手编号,5个评委打分,比较后去掉一个最高分,去掉一个最低分,计算选手的最后得分分别为:
305,9.4,9.5,9.1,9.8,9.2,9.8,9.1,9.367
208,9.3,9.1,9.5,9.4,9.7,9.7,9.1,9.400
213,9.6,9.0,9.3,9.7,9.1,9.7,9.0,9.333
304,9.8,8.9,9.4,9.1,9.6,9.8,8.9,9.367
137,9.6,9.3,9.4,9.1,9.6,9.6,9.1,9.433
206,9.1,9.5,9.3,9.0,8.8,9.5,8.8,9.133
118,9.0,9.5,9.2,9.3,8.9,9.5,8.9,9.167
选手编号 得分 名次
137 9.433 1
208 9.400 2
304 9.367 3
305 9.367 4
213 9.333 5
118 9.167 6
206 9.133 7
评委得分名次表
评委编号 得分 名次
3 8.305 1
1 7.123 2
5 6.674 3
4 6.301 4
2 5.789 5
竞赛现场统分结束,谢谢!
注意:给评委打分评价是本程序的特色,给评委一个约束,有利于竞赛评判的公正准确。给评委打分的标准仅供参考,应根据竞赛的具体实际修改完善。