Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

1314Lab11_PointContour / 1314Lab11_PointContour

.doc
Скачиваний:
17
Добавлен:
19.03.2015
Размер:
62.46 Кб
Скачать

Лабораторна робота 1-1. Точка та контур

Версія 1

Умова задачі

Треба визначити, чи лежить точка площини всередині контуру, на контурі, або зовні його. Контур визначається параметром (додатним дійсним значенням a), точка – парою дійсних координат (xy). Вхідні дані задаються користувачем за допомогою клавіатури (спочатку контур, потім точка). Якщо параметр контуру не є допустимим (додатним), програма виводить в окремому рядку екрана повідомлення WRONG PARAMETER і закінчує роботу.

Варіанти контуру

Контур, що є багатокутником, задано координатами його вершин.

  1. Квадрат: (0,0), (a,0), (a,a), (0,a).

  2. Квадрат: (–a,–a), (a,–a), (a,a), (–a,a).

  3. Квадрат: (a,0), (a,2a), (–a,2a), (–a,0).

  4. Прямокутник: (–a,0), (a,0), (a,a), (–a,a).

  5. Прямокутник: (0,–a), (a,–a), (a,a), (0,a).

  6. Прямокутник: (0,0), (a,0), (a,2a), (0,2a).

  7. Квадрат: (0,–a), (a,0), (0,a), (–a,0).

  8. Квадрат: (a,0), (2a,a), (a,2a), (0,a).

  9. Квадрат: (0,0), (a,a), (0,2a), (–a,a).

  10. Трикутник: (0,0), (a,0), (0,a).

  11. Трикутник: (–a,0), (a,0), (0,a).

  12. Трикутник: (0,0), (a,0), (a,a).

  13. Трикутник: (0,–a), (a,0), (0,a).

  14. Трикутник: (0,0), (a,a), (–a,a).

  15. Трикутник: (0,0), (2a,0), (a,a).

  16. Трикутник: (0,a), (a,0), (a,2a).

  17. Трикутник: (–a,0), (a,0), (a,2a).

  18. Трапеція: (0,–a), (a,0), (a,a), (0,a).

  19. Трапеція: (0,0), (2a,0), (a,a), (0,a).

  20. Трапеція: (2a,0), (2a,0), (a,a), (–a,a).

  21. Трапеція: (0,0), (a,0), (2a,a), (0,a).

  22. Трапеція: (–a,0), (a,0), (2a,a), (–2a,a).

  23. П’ятикутник: (0,0), (0,–a), (a,0), (0,a), (–a,0).

  24. П’ятикутник: (–a,–a), (a,–a), (a,0), (0,a), (–a,a).

  25. П’ятикутник: (0,0), (2a,0), (2a,a), (a,2a), (0,2a).

  26. П’ятикутник: (a,0), (2a,0), (2a,2a), (0,2a), (0,a).

  27. П’ятикутник: (–a,–a), (a,–a), (a,0), (0,a), (–a,a).

  28. П’ятикутник: (–a,0), (a,0), (a,a), (0,2a), (–a,a).

  29. П’ятикутник: (–a,0), (0,–a), (a,0), (a,a), (0,a).

  30. П’ятикутник: (0,0), (2a,0), (2a,2a), (a,a), (0,2a).

  31. П’ятикутник: (0,0), (a,0), (2a,a), (a,2a), (0,a).

  32. Шестикутник: (0,0),(0,a), (–a,a), (–a,–a), (a,–a), (a,0).

  33. Шестикутник: (0,0),(0,–a), (a,–a), (a,a), (–a,a), (–a,0).

  34. Шестикутник: (a,a), (a,0), (2a,0) (2a,2a), (0,2a), (0,a).

  35. Шестикутник: (0,0), (2a,0) (2a,a), (a,a), (a,2a), (0,2a).

  36. Шестикутник: (0,0), (2a,0) (2a,2a), (a,2a), (a,a), (0,a).

  37. Шестикутник: (–a,–a), (0,–a), (a,0) (a,a), (0,a), (–a,0).

  38. Шестикутник: (0,0),(a,0), (2a,a), (2a,2a), (a,2a), (0,a).

  39. Шестикутник: (0,0), (0,–a), (a,0), (a,a), (0,a), (–a,0).

  40. Шестикутник: (a,0),(2a,a), (2a,2a), (a,2a), (0,a), (a,a).

  41. Шестикутник: (0,0),(a,–a),(a,a),(0,2a), (–a,a), (–a,–a).

  42. Шестикутник: (0,a),(a,0),(a,2a),(0,3a),(–a,2a),(–a,0).

  43. Шестикутник: (0,0),(a,a),(2a,0),(2a,2a), (a,3a), (0,2a).

  44. Шестикутник: (0,0),(a,a),(a,2a),(0,a), (–a,a), (–a,0).

  45. Шестикутник: (0,0),(a,–a),(a,0),(0,a), (–a,a), (–a,0).

Вимоги до виконання

1. Програма має складатися з п’яти функцій. Головна функція містить оголошення змінних (це параметр контуру, точка й, можливо, інші) та виклики інших чотирьох функцій:

  • функція введення параметра контуру getCont,

  • функція введення точки getPoint,

  • функція визначення, як розташована точка відносно контуру wherePoint,

  • функція виведення результатів outResults.

2. Програми з глобальними змінними прийматися не будуть!

3. Функція getCont повертає дійсний параметр контуру. Якщо її виклик повернув від’ємне значення, то потрібно вивести повідомлення WRONG PARAMETER.

4. Функція wherePoint повертає одне з трьох значень, що відповідають розташуванню:

  • –1, якщо точка всередині контуру,

  • 0, якщо на контурі,

  • 1, якщо за межами контуру.

5. Функція outResults отримує ознаку розташування –1, 0, або 1 і виводить повідомлення, відповідно, IN_C, ON_C, OUT_C.

6. Функції введення повинні виводити відповідні запрошення до введення.

7. На початку програми записати прототипи всіх функцій, окрім головної, далі головну функцію, далі – решту функцій.

Версія 2 («відстань»)

Умова задачі

Обчислити відстань від точки до контуру (це найменша з відстаней від точки до точок контуру). Відстань від’ємна, якщо точка всередині контуру, і додатна, якщо за межами. Після повідомлення про розташування точки програма виводить відстань.

Вимоги до виконання

1. Додати функцію distPointCont, яка обчислює й повертає відстань від точки до контуру. Параметри-значення функції – параметр контуру, координати точки й, можливо, ціла ознака розташування точки відносно контуру.

2. Додати функцію outPoint, яка отримує координати точки й виводить їх у вигляді (x; y).

3. Додати функцію outCont, яка отримує параметр контуру й виводить його у вигляді [a].

4. Переробити функцію outResults: вона має виводити точку, повідомлення про розташування точки, параметр контуру, слово distance і відстань. Її параметри – координати точки, параметр контуру, ознака розташування й відстань.

5. Відповідно, переробити головну функцію.

Версія 3 («один контур – багато точок»)

Умова задачі

Користувач задає значення параметра контуру, поки воно не є допустимим. Якщо замість того, щоб увести наступне значення параметра, користувач натискає на клавіші Ctrl-Z і потім Enter, то в окремому рядку екрана програма виводить повідомлення <<<CONTOUR IS ABSENT>>> і закінчується. Якщо задано допустиме значення, то далі по одній вводяться й обробляються точки (визначається їх розташування й відстань). Ознака закінчення роботи з контуром – повторення попередньої точки. У цій ситуації в окрумому рядку екрана виводиться повідомлення <<<CONTOUR IS PROCESSED>>>.

Вимоги до виконання

1. Додати переозначену функцію введення параметра getCont. Вона має повертати ознаку того, що параметр контуру було введено, а сам параметр контуру повертати за допомогою свого параметра-посилання.

2. Додати функцію обробки контуру processCont, яка в циклі викликає функцію введення точки, функцію обробки точки й функцію виведення результатів. Параметр контуру має бути її єдиним параметром.

3. Відповідно, переробити головну функцію. Тепер поняття «точка» в ній відсутнє. Перед закінченням головна функція виводить в окремому рядку повідомлення END OF WORK.

Версія 4 («багато контурів – багато точок»)

Умова задачі

Як і у версії 3, задається контур і декілька точок. Проте, на відміну від версії 3, після повторення точки робота не закінчується. Вводиться значення параметра, яке визначає наступний контур, і все повторюється. Як і раніше, обробляються тільки додатні значення параметра контуру. Робота закінчується, коли користувач, замість того, щоб увести наступне значення параметра або наступну точку, натискає на клавіші Ctrl-Z і потім Enter. Якщо користувач у цей спосіб відмовляється від уведення точки, то в окремому рядку екрана виводиться повідомлення <<<END OF POINTS>>>, а якщо від параметра контуру – <<<CONTOUR IS ABSENT>>>. Як і раніше, перед закінченням головна функція виводить в окремому рядку повідомлення END OF WORK.

Вимоги до виконання

1. Після відмови користувача (Ctrl-Z і Enter) запрошень до введення не може бути.

2. Додати переозначену функцію введення точки getPoint – вона має повертати ознаку того, що точку введено, а самі координати – за допомогою параметрів-посилань.

3. Відповідно, переробити функцію обробки контуру.