На третьей неделе курса Computer Science CS50 (Harvard) предлагается выполнить домашнее задание в Problem Set 3 под названием runoff.c — нужно написать код программы, которая не просто подсчитывает, какой кандидат набрал наибольшее количество голосов, как в прошлый раз, в программе runoff нужно реализовать голосование до набора более 50% голосов всех избирателей.
Победитель будет объявлен только тогда, когда один из кандидатов наберет более половины голосов. Чтобы это можно было сделать, каждый голосующий ранжирует всех кандидатов от наибольшего предпочтения (ранг 1) до наименьшего (последний ранг). Далее подсчитывается сумма голосов в первом туре (ранг 1). Если кто-то из кандидатов наберет на этом этапе более 50% голосов, его объявляют победителем. Читать далее




