【问题标题】:How to implement a counter after finding highest value and accessing a value in 2D array?找到最高值并访问二维数组中的值后如何实现计数器?
【发布时间】:2020-11-06 03:31:25
【问题描述】:

我在尝试根据用户输入的分数为游戏实现 3 名玩家的计数器以及尝试访问该玩家的姓名时遇到问题。

void winner(const string NAMES[NUM], const int SCORES[DAYS][NUM]) {
    int player1, player2, player;
    string winner
    for (int row = 0; row < DAYS; row++) {
        int max = SCORES[row][0];
        for (int col = 1; col < NUM; col++) {
            if (SCORES[row][col] > max) {
                max = SCORES[row][col];
            }
        }
    }
}

代码已经能够找到列中的最大值。我的目标是尝试在 7 天和 3 名玩家的游戏中找出总分最高的人。但是,在发现玩家在一组列中得分最高以及尝试查找玩家姓名后,我在尝试为玩家实施计数器时遇到了麻烦。

【问题讨论】:

  • "我在尝试为玩家实现计数器时遇到问题" --> 你可以发布你的麻烦代码。

标签: c++ arrays multidimensional-array


【解决方案1】:

使用您的结构,您可能会执行以下操作:

void winner(const string NAMES[NUM], const int SCORES[DAYS][NUM]) {
    int best_scores[NUM]{};

    for (int p = 0; p != NUM; ++p) {
        for (int day = 0; day != DAYS; ++day) {
            best_scores[p] = std::max(best_scores[p], SCORES[day][p]);
        }
    }
    auto best_player = std::distance(std::begin(best_scores), std::max_element(std::begin(best_scores), std::end(best_scores));

    std::cout << "winner is " << NAMES[best_player] << " with score " << best_scores[best_player] << std::endl;
}

我建议创建结构来对名称和分数进行分组。

struct Player
{
    std::string name;
    std::array<int, DAYS> scores: // or int scores[DAYS]; 

    int best_score() const { return *std::max_element(scores.begin(), scores.end());}
};

然后

void winner(const Player (&player)[NUM]) {
    auto compare = [](const Player& lhs, const Player& rhs) {
        return lhs.best_score() < rhs.best_score();
    };

    const Player& best = *std::max_element(std::begin(players), std::end(players), compare);

    std::cout << "winner is " << best.name << " with score " << best.best_score() << std::endl;
}

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 2021-02-18
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2018-09-14
    • 2016-05-02
    • 1970-01-01
    • 2018-04-24
    相关资源
    最近更新 更多