模拟裁判打分系统:去除最高最低分,计算平均得分
模拟裁判给比赛选手打分
本程序模拟裁判给比赛选手打分,去除最高最低分,取其平均分为选手最终得分。程序使用面向对象编程实现,定义了Result类,包含选手编号、姓名、裁判打分以及最终得分等信息。
代码实现
result.h
#ifndef RESULT_H
#define RESULT_H
#include <iostream>
#include <cstring>
using namespace std;
const int UMPIRE = 5; // 裁判人数
class Result {
private:
int number; // 选手编号
char name[20]; // 选手姓名
float score[UMPIRE]; // 裁判打分
float finalScore; // 最终得分
public:
Result(int n, char *na); // 构造函数
void inputScore(); // 输入裁判打分
void getFinalScore(); // 计算最终得分
void display(); // 显示选手得分
};
#endif
exp_105.cpp
#include "result.h"
int main() {
int n; // 参赛选手人数
cout << "请输入参赛选手人数:";
cin >> n;
Result *players[n]; // 动态创建选手对象数组
// 输入选手编号和姓名
int num;
char name[20];
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "位选手的编号和姓名:";
cin >> num >> name;
players[i] = new Result(num, name);
}
// 裁判打分
cout << "比赛开始,请为选手打分:" << endl;
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "位选手的裁判打分:" << endl;
players[i]->inputScore();
players[i]->getFinalScore();
}
// 按得分排序
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
if (players[i]->finalScore < players[j]->finalScore) {
Result *temp = players[i];
players[i] = players[j];
players[j] = temp;
}
}
}
// 显示选手得分
cout << "比赛结束,按编号显示选手得分:" << endl;
for (int i = 0; i < n; i++) {
players[i]->display();
}
// 释放动态分配的空间
for (int i = 0; i < n; i++) {
delete players[i];
}
return 0;
}
Result 类成员函数实现
#include "result.h"
Result::Result(int n, char *na) {
number = n;
strcpy(name, na);
for (int i = 0; i < UMPIRE; i++) {
score[i] = 0;
}
finalScore = 0;
}
void Result::inputScore() {
for (int i = 0; i < UMPIRE; i++) {
cin >> score[i];
}
}
void Result::getFinalScore() {
float maxScore = score[0];
float minScore = score[0];
float sum = score[0];
for (int i = 1; i < UMPIRE; i++) {
if (score[i] > maxScore) {
maxScore = score[i];
}
if (score[i] < minScore) {
minScore = score[i];
}
sum += score[i];
}
finalScore = (sum - maxScore - minScore) / 3;
}
void Result::display() {
cout << number << " " << name << " " << finalScore << endl;
}
程序运行流程
- 输入参赛选手人数。
- 输入每个选手的编号和姓名。
- 输入每个选手的裁判打分。
- 计算每个选手的最终得分,并按得分排序。
- 显示每个选手的编号、姓名和最终得分。
代码说明
UMPIRE常量代表裁判人数,可以根据实际情况进行调整。Result类包含选手编号、姓名、裁判打分和最终得分等信息。getFinalScore()函数用于计算每个选手的最终得分,先找出最高分和最低分,然后将所有得分相加减去最高分和最低分,再除以裁判人数减 2(去掉最高分和最低分)得到最终得分。display()函数用于显示每个选手的编号、姓名和最终得分。- 程序中使用动态数组来存储选手对象,方便根据选手人数动态分配内存。
扩展功能
可以根据需求对程序进行扩展,例如:
- 添加比赛项目信息,方便记录不同项目选手的得分。
- 添加选手信息保存功能,方便查看历史比赛记录。
- 增加图形界面,提高程序的易用性。
原文地址: https://www.cveoy.top/t/topic/nfGu 著作权归作者所有。请勿转载和采集!