#c #arrays #multidimensional-array
#c #массивы #многомерный массив
Вопрос:
У меня возникли проблемы при попытке реализовать счетчик для 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 игроков, у кого общий наивысший балл. Однако у меня возникают проблемы при попытке реализовать счетчик для игрока после того, как я обнаружил, что у него самый высокий балл в заданном столбце, а также при попытке найти имя игрока.
Комментарии:
1. «У меня возникли проблемы при попытке реализовать счетчик для проигрывателя» -> вы могли бы опубликовать свой проблемный код.
Ответ №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 (amp;player)[NUM]) {
auto compare = [](const Playeramp; lhs, const Playeramp; rhs) {
return lhs.best_score() < rhs.best_score();
};
const Playeramp; best = *std::max_element(std::begin(players), std::end(players), compare);
std::cout << "winner is " << best.name << " with score " << best.best_score() << std::endl;
}