Я думал, нас попросят внедрить методы сортировки и поиска, изученные на 3 неделе, в задания этой недели, но оказалось, что задания тут ни при чем😂
Поскольку по мере приближения к третьей неделе наборы задач усложняются, CS50 предоставляет предопределенную структуру программы и разбивает программу на небольшие функции. Все, что нам нужно сделать, это завершить функции, которые остались пустыми.
Задание 1: Множественность
Задний план:
На мажоритарных выборах каждый избиратель получает один голос, и побеждает кандидат, набравший наибольшее количество голосов.
Спецификация:
Выполните функцию
vote
. Подтвердите введенное имя. Если он соответствует одному из имен кандидатов, обновите голосование этого кандидата и верните true. В противном случае вернуть ложь.
Выполните функцию
print_winner
. Распечатайте имя кандидата(ов), набравшего наибольшее количество голосов
Задание 2: Сток
Задний план:
Чтобы устранить недостатки множественных выборов, создается рейтинговая система голосования. Избиратели могут голосовать более чем за одного кандидата. Вместо того, чтобы просто голосовать за лучший выбор, они могут ранжировать кандидатов в порядке предпочтения. Если ни один кандидат не имеет большинства (более 50%), кандидат, получивший наименьшее количество голосов, исключается из выборов, и любой, кто первоначально выбрал этого кандидата в качестве своего первого предпочтения, теперь учитывает свое второе предпочтение. После этого голоса каждого кандидата будут пересчитаны. Исключение и пересчет повторяются до тех пор, пока кто-нибудь не наберет большинство.
Спецификация:
Выполните функцию
vote
. Подтвердите введенное имя и обновите предпочтения избирателей.
Выполните функцию
tabulate
. Обновите количество голосов, которое должен иметь каждый кандидат, чтобы позволить каждому избирателю эффективно голосовать за своего наиболее предпочтительного кандидата, который еще не был исключен.
Выполните функцию
print_winner
. Выведите имя победителя и верните true, если какой-либо кандидат набрал более половины голосов. В противном случае вернуть ложь.
Выполните функцию
find_min
. Возвращает минимальное количество голосов за любого кандидата, который все еще участвует в выборах.
Выполните функцию
is_tie
. Возвращает true, если каждый кандидат, оставшийся на выборах, имеет одинаковое количество голосов. В противном случае вернуть ложь.
Выполните функцию
eliminate
. Исключите кандидата (ов), набравшего минимальное количество голосов.
Использованная литература:
CS50 Неделя3
Заявление о перерыве