歌手大奖赛共有10位评委,为每位选手打分(double型)。预赛部分歌手的分数,为去掉1个最高分、1个最低分后其余8个分数的平均值;决赛部分歌手的分数,为去掉2个最高分、2个最低分后其余6个分数的平均值。通过键盘输入10位评委的打分,以及当前处于哪个阶段(预赛部分用1表示,决赛部分用2表示)。主函数中,只负责输入数据、调用分数计算函数、输出结果,评分计算部分编写独立函数完成。
输入样例
98.5 88 90 93 94 90.4 89 92 88.6 97 2
结尾无空行
输出样例
91.4
结尾无空行
输入样例
98.5 88 90 93 94 90.4 89 92 88.6 97 1
结尾无空行
输出样例
91.75
结尾无空行
先将10位评委分数存储在一维数组中并对数组排序 。然后根据输入的情况,确定去掉几个最高分、最低分,最后计算平均分。
#include<iostream>
using namespace std;
void func(double* p)
{
for (int i = 0; i < 9; i++)
{
for (int j = 0; j < 9 - i; j++)
{
double temp;
temp = p[j];
p[j] = p[j + 1];
p[j + 1] = temp;
}
}
}
double js(double* p)
{
double sum = 0;
for (int i = 2; i < 8; i++)
{
sum += p[i];
}
return sum / 6.0;
}
double ys(double* p)
{
double sum = 0;
for (int i = 1; i < 9; i++)
{
sum += p[i];
}
return sum / 8.0;
}
int main()
{
double* p = new double[10];
for (int i = 0; i < 10; i++)
{
cin >> p[i];
}
int x;
cin >> x;
if (x == 1) {
cout << ys(p);
}
if (x == 2) {
cout << js(p);
}
delete[]p;
return 0;
}
#include <iostream>
using namespace std;
void fun(double *p ,int n)
{
for(int i=0;i<n-1;i++)
for(int j=0;j<n-i-1;j++)
{
if(p[i] > p[i+1])
{
double d = p[j];
p[j] = p[j+1];
p[j+1] = d;
}
}
}
double getavg(double *p ,int n,int type)
{
double sum =0;
if(type == 1)
{
for(int i=1;i<n-1;i++)
sum += p[i];
sum = sum/(n-2);
}
else if(type == 2)
{
for(int i=2;i<n-2;i++)
sum += p[i];
sum = sum/(n-4);
}
return sum;
}
int main()
{
double d[10];
int type;
for(int i=0;i<10;i++)
cin>>d[i];
cin>>type;
fun(d,10);
cout<<setprecision(2)<<getavg(d,10,type);
return 0;
}