Professional Documents
Culture Documents
2223lab11 PointContour
2223lab11 PointContour
Точка та контур
Умова задачі
Версія 1 («точка та зафіксований контур»)
Визначити, чи лежить точка площини всередині контуру, на контурі, або зовні його. Контур (див. варіанти нижче)
задається параметром a = 10, точка – парою дійсних координат (x, y). Вхідні дані, а саме, пару координат точки, задає
користувач за допомогою клавіатури.
Вимоги до виконання
1. Програма складається з шести функцій – головної та п’яти допоміжних:
виведення даних про автора aboutA, визначення розташування whereP,
введення точки getP, обробки точки processP.
виведення точки putP,
2. У головній функції означено змінні для параметра контуру та координат точки. Головна функція містить
виклики функцій aboutA, getP, processP.
3. Функція aboutA (без параметрів) виводить у першому рядку назву роботи, у другому номер групи, прізвище та
ім’я автора програми через пробіл.
4. Функція getP має два параметри-посилання, за допомогою яких передає дійсні координати точки. Повертає
ознаку успішного введення координат.
5. Функція putP виводить координати точки у вигляді (x;y).
6. Функція whereP повертає ознаку розташування –1, 0, або 1, якщо, відповідно, точка всередині контуру, на
контурі, або за межами контуру.
7. Функція processP викликає функцію putP, функцію whereP, виводить одне з повідомлень IN_C, ON_C, OUT_C
(«всередині контуру», «на контурі», «за межами контуру») та значення параметра контуру.
8. На початку програми записати прототипи функцій, далі головну функцію, далі – решту функцій.
9. Програма здається разом з фото аркуша паперу в клітинку (або файлом із векторною чи точковою графікою),
який містить рисунок з контуром та точками, на яких студент перевіряв роботу програми, а також табличку, в якій
записано координати цих точок та відповідні їм вихідні дані, які має виводити програма.
Програми, в яких є глобальні змінні або які не виводять запрошень до введення або виводять повідомлення,
відмінні від зазначених, будуть відправлятися на доробку! Це саме стосується й подальших версій.
Варіанти контуру
Контур є багатокутником, заданим координатами його послідовних вершин.
1. Квадрат: (0,0), (a,0), (a,a), (0,a). 32. Опуклий 5-кутн.: (a,0), (2a,a), (2a,2a), (0,2a), (0,a).
2. Квадрат: (–a,–a), (a,–a), (a,a), (–a,a). 33. Опуклий 5-кутн.: (–a,0), (0,–a), (a,0), (a,a), (0,a).
3. Квадрат: (a,0), (a,2a), (–a,2a), (–a,0). 34. Опуклий 5-кутн.: (0,0), (a,0), (2a,a), (a,2a), (0,a).
4. Прямокутник: (–a,0), (a,0), (a,a), (–a,a). 35. Опуклий 5-кутн.: (a,0), (2a,0), (2a,a), (a,2a), (0,a).
5. Прямокутник: (0,–a), (a,–a), (a,a), (0,a). 36. Опуклий 5-кутн.: (0,0), (a,–a), (2a,0), (2a,a), (a,a).
6. Прямокутник: (0,0), (a,0), (a,2a), (0,2a). 37. Неоп. 5-кутн.: (0,0), (2a,0), (2a,2a), (a,a), (0,2a).
7. Квадрат: (0,–a), (a,0), (0,a), (–a,0). 38. Неоп. 5-кутн.: (0,0), (a,a), (2a,0), (2a,2a), (0,2a).
8. Квадрат: (a,0), (2a,a), (a,2a), (0,a). 39. Неоп. 5-кутн.: (0,0), (a,a), (2a,0), (2a,2a), (0,2a).
9. Квадрат: (0,0), (a,a), (0,2a), (–a,a). 40. Неоп. 5-кутн.: (a,0), (0,a), (a,2a), (–a,2a), (–a,0).
10. Трикутник: (0,0), (a,0), (0,a). 41. Неоп. 5-кутн.: (0,0), (0,–a), (a,0), (0,a), (–a,0).
11. Трикутник: (–a,0), (a,0), (0,a). 42. Неоп. 5-кутн.: (0,0), (a,a), (0,a), (0,2a), (–a,a).
12. Трикутник: (0,0), (a,0), (a,a). 43. Неоп. 5-кутн.: (0,0), (a,a), (0,2a), (–a,a), (0,a).
13. Трикутник: (0,–a), (a,0), (0,a). 44. Неоп. 5-кутн.: (a,0), (2a,a), (a,2a), (a,a), (0,a).
14. Трикутник: (0,0), (a,a), (–a,a). 45. Неоп. 6-кутн.: (0,0),(0,a), (–a,a), (–a,–a), (a,–a), (a,0).
15. Трикутник: (0,0), (2a,0), (a,a). 46. Неоп. 6-кутн.: (0,0),(0,–a), (a,–a), (a,a), (–a,a), (–a,0).
16. Трикутник: (0,a), (a,0), (a,2a). 47. Неоп. 6-кутн.: (a,a), (a,0), (2a,0) (2a,2a), (0,2a), (0,a).
17. Трикутник: (–a,0), (a,0), (a,2a). 48. Неоп. 6-кутн.: (0,0), (2a,0) (2a,a), (a,a), (a,2a), (0,2a).
18. Трапеція: (0,–a), (a,0), (a,a), (0,a). 49. Неоп. 6-кутн.: (0,0), (2a,0) (2a,2a), (a,2a), (a,a), (0,a).
19. Трапеція: (0,0), (2a,0), (a,a), (0,a). 50. Опукл. 6-кутн.: (–a,–a), (0,–a), (a,0) (a,a), (0,a), (–a,0).
20. Трапеція: (0,0), (a,0), (2a,a), (0,a). 51. Опукл. 6-кутн.: (0,0),(a,0), (2a,a), (2a,2a), (a,2a), (0,a).
21. Трапеція: (a,0), (a,2a), (0,2a), (0,a). 52. Опукл. 6-кутн.: (a,0), (2a,0), (2a,a), (a,2a), (0,2a), (0,a).
22. Трапеція: (–2a,0), (2a,0), (a,a), (–a,a). 53. Опукл.6-кут.: (0,0),(a,–a), (2a,0), (2a,2a), (a,3a), (0,2a).
23. Трапеція: (–a,0), (a,0), (2a,a), (–2a,a). 54. Опукл.6-кут.: (0,0), (2a,0), (3a,a), (2a,2a), (0,2a), (–a,a).
24. Трапеція: (0,0), (3a,0), (2a,a), (a,a). 55. Неоп.6-кутн.: (0,0), (0,–a), (a,0), (a,a), (0,a), (–a,0).
25. Опукл. 5-кутн.: (0,0), (2a,0), (2a,a), (a,2a), (0,2a). 56. Неоп.6-кутн.: (a,0), (2a,a), (2a,2a), (a,2a), (0,a), (a,a).
26. Опукл. 5-кутн.: (a,0), (2a,0), (2a,2a), (0,2a), (0,a). 57. Неоп.6-кутн.: (0,0), (a,a), (a,2a), (0,a), (–a,a), (–a,0).
27. Опукл. 5-кутн.: (0,–a), (a,–a), (a,a), (–a,a), (–a,0). 58. Неоп.6-кутн.: (0,0), (a,–a), (a,0), (0,a), (–a,a), (–a,0).
28. Опукл. 5-кутн.: (0,0), (2a,0), (2a,2a), (a,2a), (0,a). 59. Неоп.6-кутн.: (0,–a), (a,0), (a,a), (0,0), (–a,a), (–a,0).
29. Опуклий 5-кутн.: (–a,–a), (a,–a), (a,0), (0,a), (–a,0). 60. Неоп.6-кутн.: (0,0), (a,a), (0,a), (–a,0), (0,–a), (a,–a).
30. Опуклий 5-кутн.: (–a,0), (a,0), (a,a), (0,2a), (–a,a). 61. Неоп.6-кутн.: (0,a), (a,0), (a,a), (0,2a), (–a,a), (–a,0).
31. Опуклий 5-кутн.: (–a,0), (0,–a), (a,–a), (a,a), (0,a).
Версія 2 («контур і точки»)
Отримати від користувача розмір контуру та послідовність точок. Для кожної точки визначити її розташування
відносно контуру та вивести повідомлення як у версії 1.
Користувач має задавати значення параметра контуру, поки воно не стане допустимим, тобто додатним. Якщо
замість того, щоб увести значення, користувач натискає на клавіші, після яких не можна отримати число, а потім на
Enter, тобто додатне значення не отримано, то програма повідомляє про це й завершується. Якщо користувач увів
додатне значення параметра контуру, то далі по одній вводяться та обробляються точки (визначається їх
розташування). Ознака закінчення роботи з точками – замість уведення координати натиснуто на клавіші, після яких
не можна утворити число, а потім на Enter.
Вимоги до виконання
1. Додати функцію getCont. Вона повертає ознаку, чи отримано від користувача додатне значення параметра
контуру. Саме це значення передається з її виклику за допомогою параметра-посилання.
2. Додати функцію обробки контуру processCont, параметром якої є параметр контуру. Вона в циклі викликає
функції введення координат точки, обробки точки та виведення результатів обробки. У разі неуспішного введення
точки вона виводить повідомлення <<<END OF POINTS>>> і закінчує свою роботу.
3. Якщо додатне значення параметра контуру не отримано, то головна функція виводить повідомлення
<<<CONTOUR IS ABSENT>>>, інакше викликає функцію обробки контуру. У головній функції тепер відсутнє
поняття «точка». Перед закінченням роботи головна функція виводить в окремому рядку повідомлення
<<<END OF WORK>>>.
4. Параметрами функцій обробки точки processP та визначення розташування whereP мають бути параметр
контуру та координати точки.
5. Додати функцію виведення результатів обробки точки putResult. Вона отримує параметр контуру, координати
точки та ознаку розташування точки й виводить в одному рядку повідомлення про розташування точки.
6. Функція обробки точки processP змінюється: замість виводити повідомлення вона передає дані для виведення у
виклику putResult.
===================================================================