首页 > 解决方案 > 对于下面给出的任务,使用类还是多维数组更好?

问题描述

我是 C++ 的新手。我想知道我应该使用 class/es 还是使用多维数组来执行此操作?我真的需要一些关于如何实现这些目标的指示!

所以,我有以下任务:

制作一个程序,用作世界田径比赛的信息系统。程序应保留和修改有关运动员的信息,如每个运动员->(参加比赛的人数、姓名、纪律、职业生涯的最佳成绩、今年的最佳成绩、参加世界比赛的次数)。必须有 5 个不同的项目(200 米短跑、4x400 米、投掷矛、跳高、三级跳远)。每个项目将有6名运动员。

A. 程序中的功能使用菜单(我已经做了大部分,我相信)

B. 添加运动员 i. 在每个学科中增加一名运动员。ii. 添加运动员名单,写下 N 号,在其后写下每个学科的 N 名运动员。

C. 在屏幕上显示所有运动员

D. 举办比赛

一世。为每位运动员随机运行。运动员的得分不得低于其当年最佳成绩的 20%,不得超过其职业生涯最佳成绩的 10%。

ii. 每个运动员有 5% 的机会进行错误起步。

E. 奖牌表 - 每场比赛的运动员按国家分组在一个新的数组中(第一名 - 30p,scnd - 20p,等等)。数组按升序显示在屏幕上(还显示国家名称、积分、来自该国家的运动员名单、他们在比赛中的得分)

F. 显示一些额外信息:

一世。显示按年龄排序的屏幕运动员

ii. 播种按姓名排序的屏幕上的运动员

iii. 在屏幕上显示参加世界比赛最多的运动员

三、在屏幕上显示运动员最多的国家

G. 程序中的数据可以在程序的两次运行之间保存在一个文件中。

标签: c++classmultidimensional-arrayvisual-c++

解决方案


...我应该使用 class/es 还是使用多维数组来做到这一点?

几乎所有复杂度略高于“hello world”的 C++ 程序都会使用类将相关信息收集到单个对象中。

在您的情况下,一个明显的类将是代表运动员的类​​。喜欢:

class athlete
{
    string name;
    uint32_t competition_number;
    ...
    ...
};

然后,您可能希望另一个班级使用矢量来容纳所有运动员。就像是:

class participants
{
    vector<athlete> participants;
    ...
    ...
}

如果您从这两个课程开始,您将能够解决家庭作业的许多部分。

与比赛类似,使用某些类(可能是模板化的)来表示比赛可能是有意义的。此类的一个成员变量可以是该特定比赛的参与者的向量。成员函数可以是run().

关于数组:在许多情况下,数组在 C++ 中被向量所取代。如果您需要多维容器,可以创建多维向量,如下所示:

vector<vector<int> x;

推荐阅读