лем, який може бути використаним для вирішення інших подібних завдань. Такий підхід не потребує спеціальної обчислювальної техніки, а істотно відрізняється характером мислення виконавців у порівнянні з процедурними мовами програмування.
Через очевидну простоту алгоритму для реалізації задачі найкраще вибрати процедурну парадигму програмування і мови Паскаль чи Сі. Звичайно, для написання гарного інтерфейсу можна взяти об'єктно-орієнтовані мови C Builder або Delphi. Однак, як можна було побачити з розгляду алгоритму задачі, побудова інтерфейсу зводилася б до послідовного виведенню вікон. Ще одним аргументом на користь немов Паскаль або Сі є розміри програми, які б при використанні C Builder або Delphi були набагато більшими.
Серед двох мов - Паскаль і Сі, - я оберу Паскаль як більш звичний для себе.
5.2 Структура програми
Структурно дану програму можна розділити на блоки.
Кожен блок може бути віднесений до однієї з функціональних груп:
1. Побудова інтерфейсу;
2. Реалізація алгоритмів, представлених у розділі 4.
Отже, програма має наступну структуру:
Процедура victory - це реалізація алгоритму визначення переможця, описаного в попередньому розділі. Під час виклику даної процедури задається масив оцінок Борда чи Копленда, а також текст, для виведення результатів (ним служать слова "Копленда" і "Борда"). У попередньому розділі вже було обгрунтовано, чому для визначення переможця за різними правилами використаний єдиний алгоритм. Процедура help виводить список імен кандидатів у нижньому рядку екрана. Вона введена для полегшення введення інформації користувачем.
В
Рис. 5.1 Структура програми. br/>
Процедура example містить дані контрольного прикладу. Вона введена для полегшення перевірки правильності роботи програми і носить демонстраційний характер.
Процедура right призначена для перевірки правильності вводу символу. Вона використовується при виборі внесення інформації (демонстрація контрольного прикладу чи самостійне внесення профілю) і виборі способу занесення даних (окремими виборцями або працівниками виборчого комітету).
Перейдемо до розгляду основної програми.
Насамперед у ній проходить виклик і взаємозв'язок описаних вище процедур.
Процедури побудови інтерфейсу викликаються на початку роботи програми. Вони призначені для полегшення внесення даних.
Процедура victory визначає переможця і виводить результат голосування за певним правилом. Тому її виклик відбувається наостанок основної програми. p> Опишемо змінні, які використовуються в основній програмі.
N: кол-во виборців;
M: кол-во кандидатів;
s: кол-во груп;
rang: профіль переваг;
а, b: для визначення оцінки Копленда (використовується в бінарних порівняннях);
kopl: масив оцінок Копленда;
vybor1, vybor2: змінні зовнішніх циклів пр...