#include <iostream>
#include<iomanip>
#include<cmath>
using namespace std;
#define ATHLETE 40
#define JUDGE 20
//全局
int j,n,m;
int sh[ATHLETE];
int ph[JUDGE];
float sf[ATHLETE];
float pf[JUDGE];
float f[ATHLETE][JUDGE];
class mark {
public:
void menu();//显示菜单函数
void add();//录入选手,评委人数
void CountAthleteScore(int sh[], float sf[], int n, float f[], int m);
void Sort(int h[], float f[], int n);
void Print(int h[], float f[], int n);
void CountJudgeScore(int ph[], float pf[], int m, float sf[], float f[], int n);
};
void mark::menu() {
cout << "---------欢迎使用评委评分系统---------" << endl;
cout << "-------1.录入参赛选手评委人数-------" << endl;
cout << "-------2.统计参赛选手得分数据-------" << endl;
cout << "-------3.显示评委打分情况数据-------" << endl;
cout << "-------4.显示选手最终成绩排名-------" << endl;
cout << "-------0.退出评委评分系统程序-------" << endl;
}
int main() {
int select;//定义选择变量
mark M;
while (true)
{
M.menu();
cout << "请选择菜单序号:" << endl;
cin >> select;
switch (select)
{
case 1: //录入参赛选手评委人数
M.add();
break;
case 2: //统计参赛选手得分数据
M.CountAthleteScore(sh, sf,n, *f, m);
break;
case 3: //显示评委打分情况数据
M.Sort(sh, sf, n);
M.Print(sh, sf, n);
break;
case 4: //显示选手最终成绩排名
M.CountJudgeScore(ph, pf, m, sf, *f, n);
break;
case 0:
cout << "欢迎使用评委评分系统" << endl;
system("pause");
return 0;
break;
default:
break;
}
}
return 0;
}
void mark::add() {
mark M;
cout << "请输入选手的人数";
cin >> n;
cout << "请输入评委人数数(大于等于3人)";
cin >> m;
for (int j = 1; j <= m; j++)
{
ph[j] = j;
}
}
void mark::CountAthleteScore(int sh[], float sf[], int n, float f[], int m)
{
int i, j; float max, min;
mark M;
for (i = 1; i <= n; i++)
{
cout << "\n选手" << i << "正在参赛中";
cout << "\n";
cout << "\n请输入这个选手的编号:";
cin >> sh[i]; sf[i] = 0;
max = 0; min = 100;
for (j = 1; j <= m; j++)
{
cout << "评委 " << j << " 给分:";
cin >> f[i * m + j];
sf[i] = sf[i] + f[i * m + j];
if (max < f[i * m + j])
{
max = f[i * m + j];
}
if (min > f[i * m + j])
{
min = f[i * m + j];
}
}
cout << "去掉一个最高分:" << max << endl;
cout << "去掉一个最低分:" << min << endl;
sf[i] = (sf[i] - max - min) / (m - 2);
cout << "选手" << sh[i] << "最后得分是" << sf[i] << endl;
}
}
void mark::Sort(int h[], float f[], int n)
{
int i, j, k, temp2;
float temp1;
mark M;
for (i = 1; i <= n - 1; i++)
{
k = i;
for (j = i + 1; j <= n; j++)
{
if (f[j] > f[k])
k = j;
}
if (k != i)
{
temp1 = f[k];
f[k] = f[i];
f[i] = temp1;
temp2 = h[k];
h[k] = h[i];
h[i] = temp2;
}
}
}
void mark::Print(int h[], float f[], int n)
{
int i;
mark M;
cout << "编号\t最后得分\t名次\n";
for (i = 1; i <= n; i++)
{
cout << std::left << setw(6) << h[i] << "\t" << setw(11) << f[i] << "\t" << setw(5) << i << endl;
}
}
void mark::CountJudgeScore(int ph[], float pf[], int m, float sf[], float f[], int n)
{
int i, j;
mark M;
for (j = 1; j <= m; j++)
{
pf[j] = 0;
for (i = 1; i <= n; i++)
{
pf[j] = pf[j] + (f[i * m + j] - sf[i]) * (f[i * m + j] - sf[i]);
}
pf[j] = 10 - sqrt(pf[j] / n);
cout << "评委" << j << "打分:" << pf[j] << endl;
}
}
C++课程设计之大赛评分系统
最新推荐文章于 2023-06-16 14:25:17 发布