Я думал, нас попросят внедрить методы сортировки и поиска, изученные на 3 неделе, в задания этой недели, но оказалось, что задания тут ни при чем😂

Поскольку по мере приближения к третьей неделе наборы задач усложняются, CS50 предоставляет предопределенную структуру программы и разбивает программу на небольшие функции. Все, что нам нужно сделать, это завершить функции, которые остались пустыми.

Задание 1: Множественность

Задний план:

На мажоритарных выборах каждый избиратель получает один голос, и побеждает кандидат, набравший наибольшее количество голосов.

Спецификация:

Выполните функцию vote. Подтвердите введенное имя. Если он соответствует одному из имен кандидатов, обновите голосование этого кандидата и верните true. В противном случае вернуть ложь.

Выполните функцию print_winner. Распечатайте имя кандидата(ов), набравшего наибольшее количество голосов

Задание 2: Сток

Задний план:

Чтобы устранить недостатки множественных выборов, создается рейтинговая система голосования. Избиратели могут голосовать более чем за одного кандидата. Вместо того, чтобы просто голосовать за лучший выбор, они могут ранжировать кандидатов в порядке предпочтения. Если ни один кандидат не имеет большинства (более 50%), кандидат, получивший наименьшее количество голосов, исключается из выборов, и любой, кто первоначально выбрал этого кандидата в качестве своего первого предпочтения, теперь учитывает свое второе предпочтение. После этого голоса каждого кандидата будут пересчитаны. Исключение и пересчет повторяются до тех пор, пока кто-нибудь не наберет большинство.

Спецификация:

Выполните функцию vote. Подтвердите введенное имя и обновите предпочтения избирателей.

Выполните функцию tabulate. Обновите количество голосов, которое должен иметь каждый кандидат, чтобы позволить каждому избирателю эффективно голосовать за своего наиболее предпочтительного кандидата, который еще не был исключен.

Выполните функцию print_winner. Выведите имя победителя и верните true, если какой-либо кандидат набрал более половины голосов. В противном случае вернуть ложь.

Выполните функцию find_min. Возвращает минимальное количество голосов за любого кандидата, который все еще участвует в выборах.

Выполните функцию is_tie. Возвращает true, если каждый кандидат, оставшийся на выборах, имеет одинаковое количество голосов. В противном случае вернуть ложь.

Выполните функцию eliminate. Исключите кандидата (ов), набравшего минимальное количество голосов.

Использованная литература:

CS50 Неделя3





Заявление о перерыве