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;
}

原文地址: https://www.cveoy.top/t/topic/bPKY 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录