歌咏比赛pascal

来源:百度知道 编辑:UC知道 时间:2024/07/05 14:33:37
Gybs.pas
某一次歌咏比赛,有五个歌手参加,七个裁判对每个歌手平均打分。每个歌手的得分为去掉一个最高分和一个最低分后的平均分,最后以平均分最高为第一名依次打印。
裁判也有得分:裁判对每个歌手打的分数与该歌手最后得分的差的绝对值相加,差值最小为第一名,最大为最后一名,请依次打印。

输入样例:五个歌手,七个裁判

9.25, 8.77, 9.12, 9.57, 8.82, 9.05, 8.98
6.49, 7.72, 7.81, 6.76, 7.60, 6.77, 7.13
8.21, 8.45, 8.76, 8.34, 8.19, 7.98, 9.02
9.87, 9.71, 9.11, 9.34, 9.34, 9.34, 9.01
8.91, 8.48, 9.18, 9.07, 8.67, 9.13, 8.84

输出样例:

No. Singer Score
1 4 9.37
2 1 9.04
3 5 8.92
4 3 8.39
5 2 7.20
No. Judge Score
1 6 1.08
2 5 1.11
3 4 1.19
4 7 1.20
5 3 1.57
6 1 1.61
7 2 1.64

请帮忙写答题过程,谢谢!

翻来覆去的比较,计算
Program HelloWorld;
var h:array[1..5,1..7] of real;
a:array[1..5] of real;
b:array[1..7] of real;
a1,b1:array[1..7] of integer;
s,p,t:real;
i,j,k:integer;

Begin
for i:=1 to 5 do begin
a1[i]:=i;
for j:=1 to 7 do
read(h[i,j]);
readln; end;
for i:=1 to 7 do b1[i]:=i;
for i:=1 to 5 do begin s:=0;
for j:=1 to 7 do s:=s+h[i,j];
a[i]:=s/7; end;

for j:=1 to 7 do begin s:=0;
for i:=1 to 5 do s:=s+abs(h[i,j]-a[i]);
b[j]:=s/5; end;

for i:=1 to 4 do
for j:=i+1 to 5 do
if a[i]<a[j] then begin
t:=a[i];a[i]:=a[j];a[j]:=t;
k:=a1[i];a1[i]:=a1[j];a1[j]:=k; end;
for i:=1 to 64 do
for j:=i+1 to 7 do
if b[i]>b[j] then begin
t:=b[i];b[i]:=b[j];b[j]:=t;
k:=b1[i];b1[i]:=b1[j];b1[j]:=k; end;
writeln('no.':5,'singer':10,'score':10);
for i