Функция print_winner должна найти кандидата, набравшего наибольшее количество голосов, и вывести его имя. В случае, если есть более 1 человека с одинаковым количеством голосов, функция должна вывести их имена. вот ошибка
:) print_winner identifies Alice as winner of election
:) print_winner identifies Bob as winner of election
:( print_winner identifies Charlie as winner of election
print_winner function did not print winner of election
:) print_winner prints multiple winners in case of tie
:) print_winner prints all names when all candidates are tied
мой код
void print_winner(void)
{
int lenght = sizeof(candidates[0].votes);
for (int i = 1; i < lenght - 1 ; i++)
{
if (candidates[0].votes <= candidates[i].votes)
{
candidates[0].votes = candidates[i].votes;
}
if (candidates[0].votes == candidates[i].votes)
{
printf("%s\n", candidates[i].name);
}
}
printf("%s\n", candidates[0].name);
return;
}
И для подсчета в целом вы не можете отобразить результат, пока не просмотрите все элементы, которые нужно подсчитать. Вы не можете объявить «победителя» в середине цикла.
все работает отлично, но ломается, если есть 2 кандидата a, b и 3 голоса, b , b, недействительный голос \\ он должен печатать b, но он печатает b a
Предоставьте достаточно кода, чтобы другие могли лучше понять или воспроизвести проблему.
Вы «переключаете» количество голосов. Имена остаются прежними. (И окончательный вывод всегда печатает кандидат[0].имя, которое всегда является первым кандидатом, введенным в командной строке).
Дайте вашему решению еще немного подумать. Он должен ответить на 2 вопроса. Сколько будет наибольшее количество голосов? Кто из кандидатов набрал такое количество голосов? Это может быть выполнено с помощью двух циклов через кандидатов. Удачи.
Что такое
candidates
? Что такоеcandidates[0]
? Что такоеcandidates[0].votes
? Пожалуйста, создайте минимальный воспроизводимый пример, чтобы показать нам.