C++ 模拟裁判打分系统:去掉最高最低分求平均分
result.h
#ifndef RESULT_H
#define RESULT_H
const int UMPIRE = 5; // 裁判人数
class Result {
private:
int id; // 选手编号
char name[20]; // 选手姓名
double score[UMPIRE]; // 裁判打分
double final_score; // 选手最终得分
public:
Result(int i, char n[20]); // 构造函数
void input_score(); // 输入裁判打分
void calc_score(); // 计算选手得分
void display(); // 显示选手得分
int get_id(); // 获取选手编号
};
#endif
result.cpp
#include <iostream>
#include "result.h"
using namespace std;
Result::Result(int i, char n[20]) {
id = i;
strcpy(name, n);
}
void Result::input_score() {
cout << '请输入裁判的打分:' << endl;
for (int i = 0; i < UMPIRE; i++) {
cin >> score[i];
}
}
void Result::calc_score() {
double max_score = score[0];
double min_score = score[0];
double total_score = score[0];
for (int i = 1; i < UMPIRE; i++) {
if (score[i] > max_score) max_score = score[i];
if (score[i] < min_score) min_score = score[i];
total_score += score[i];
}
final_score = (total_score - max_score - min_score) / (UMPIRE - 2);
}
void Result::display() {
cout << '选手' << id << ' ' << name << ' 的得分为:' << final_score << endl;
}
int Result::get_id() {
return id;
}
exp_105.cpp
#include <iostream>
#include <cstring>
#include <algorithm>
#include "result.h"
using namespace std;
int main() {
int num; // 参赛选手人数
cout << '请输入参赛选手人数:';
cin >> num;
Result **players = new Result*[num]; // 动态数组,存储所有选手
// 输入所有选手信息
for (int i = 0; i < num; i++) {
int id;
char name[20];
cout << '请输入选手' << i+1 << '的编号和姓名:';
cin >> id >> name;
players[i] = new Result(id, name);
}
// 为所有选手打分
cout << '比赛开始,请为选手打分:' << endl;
for (int i = 0; i < num; i++) {
cout << '选手' << players[i]->get_id() << ' ' << players[i]->name << endl;
players[i]->input_score();
players[i]->calc_score();
}
// 按得分从高到低排序
sort(players, players+num, [](Result* a, Result* b){ return a->final_score > b->final_score; });
// 显示选手得分
cout << '比赛结束,按编号显示选手的得分:' << endl;
for (int i = 0; i < num; i++) {
players[i]->display();
}
// 释放内存
for (int i = 0; i < num; i++) {
delete players[i];
}
delete[] players;
cout << '胡灿' << endl; // 输出水印
return 0;
}
原文地址: https://www.cveoy.top/t/topic/nfGR 著作权归作者所有。请勿转载和采集!