Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Кафедра інформатики

Харківський національний педагогічний університет імені Г.С. Сковороди

Задача тижня 2012

Задача тижня 26.11.12 – 02.12.12

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Геометр

 

Чотири точки на площині задані своїми координатами.

1. Створіть програму, яка визначає, чи можуть ці точки бути вершинами опуклого чотирикутника, і, якщо так, обчислює його периметр.

Вхідні дані

Значення x1, y1, x2, y2, x3, y3, x4, y4 (координати точок (x1; y1), (x2; y2), (x3; y3), (x4; y4)) – цілі числа з діапазону [-1000; 1000], вводяться з клавіатури.

Вихідні дані

Значення P (периметр прямокутника або, якщо задані точки не можуть бути вершинами опуклого чотирикутника, значення 0) – дійсне число, виводиться на екран.

2. Заповніть тестову таблицю за результатами роботи програми:

 

Номер

тесту

x1y1 x2y2x3y3x4y4 P
10004505418.0
2-2-3414603
35551-1-105
40020014003-4000
50055-550-5
623456789
735814253
8-713-204381
905314-1062
100020024003-4000

 

 

 

Аналіз розв’язку задачі «Геометр»

 

Наведемо пояснення до розв’язку задачі.

Якби за умовою задачі було визначено, що координати точок вводяться в порядку обходу вершин чотирикутника, розв’язок задачі не був би складним:

• спочатку слід було б перевірити, чи є чотирикутник опуклим.

Якщо чотирикутник є опуклим, то для кожної прямої, що сполучає його суміжні вершини, решта вершин розташована по один її бік.

Для точок, що знаходяться на прямій, яка проходить через точки 1 і 2, виконується рівність:

(y-y1)*(x2-x1)-(x-x1)*(y2-y1)=0.

Для точок, розташованих по різні сторони від цієї прямої, вираз

(y-y1)*(x2-x1)-(x-x1)*(y2-y1) матиме різні знаки.

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

• якщо чотирикутник виявився опуклим, слід обчислити його периметр.

За умовою нашої задачі координати точок уводяться в довільному порядку, тому зазначену вище умову слід перевіряти для всіх відрізків, якими можна з’єднати задані точки. Якщо кількість відрізків, для яких умова виконується, дорівнюватиме 4, то ці відрізки і є сторонами опуклого чотирикутника, а сума їх довжин є шуканим периметром.

 

Тестова таблиця з результатами роботи програми:

 

Номер

тесту

x1y1x2y2x3y3x4y4P
10004505418.0000
2-2-341460323.5357
35551-1-10521.4073
40020014003-40001600.0181
50055-550-50
6234567890
7358142530
8-713-20438160.4989
905314-10620
100020024003-40000

 

Журі оцінило надіслані розв’язки наступним чином:

 

УчасникКількість балів
1Сергій Сальніков
3