Вантажні перевезення
1. Створіть програму, яка визначає, чи можливо розташувати вантаж (прямокутний паралелепіпед) у кузові бортового вантажного автомобіля таким чином, щоб усі ребра цього паралелепіпеду були паралельні або перпендикулярні бортам кузова автомобіля. Дозволяється ставити вантаж на будь-який бік.
Вхідні дані
Значення a, b, c (лінійні розміри вантажу), d, f (лінійні розміри кузова) - додатні числа, вводяться з клавіатури.
Вихідні дані
Значення S - рядок, що містить повідомлення «так» або «ні», виводиться на екран.
2. Заповніть тестову таблицю за результатами роботи програми:
Номер тесту |
a | b | c | d | f | S |
1 | 3.0 | 2.0 | 4.0 | 2.1 | 3.1 | так |
2 | 3.0 | 3.0 | 3.0 | 3.1 | 2.1 | |
3 | 1.9 | 2.9 | 1.4 | 1.7 | 4.0 | |
4 | 1.4 | 2.9 | 1.9 | 1.7 | 4.0 | |
5 | 5.0 | 1.4 | 1.4 | 1.5 | 3.0 | |
6 | 1.4 | 5.0 | 5.0 | 2.0 | 2.0 | |
7 | 1.5 | 3.5 | 3.5 | 4.0 | 1.7 | |
8 | 1.5 | 3.5 | 1.5 | 4.0 | 1.7 |
Аналіз розв'язку задачі «Вантажні перевезення»
Звернемо увагу на те, що порівняння площ основи кузова й найменшої основи вантажу (а саме таким порівнянням скористались деякі учасники нашого марафону) не веде до правильного розв'язку задачі. Наприклад, якщо a=100, b=100, c=0.01, d=10, f=10, вантаж не можна розмістити в кузові, хоча площа основи кузова перевищує площу найменшої основи вантажу.
Правильний розв'язок задачі потребує порівнянь габаритів кузова і вантажу.
Позначимо менший розмір основи кузова через Mk, більший через Bk; а найменшіі лінійні розміри вантажу через Mv і Bv, де Mv ≤ Bv. Зрозуміло, що вантаж не можна розмістити в кузові, якщо Mk < Mv або Bk < Bv. Отже, найбільш прозорим нам здається трьохетапний підхід до розв'язання задачі: знайти Mk і Bk; знайти Mv і Bv; за результатами порівняння знайдених значень зробити висновок.
Такий підхід можна реалізувати декількома способами. Наприклад:
1. Знайдемо Mk і Bk:
то початок Mk = f; Bk = d; кінець;
2. Знайдемо Mv і Bv:
то початок Mv = с; якщо a < b то Bv = a інакше Bv = b; кінець;
3. Порівнюємо відповідні габарити вантажу й кузова:
S = ‘так';
Тестова таблиця з результатами роботи програми:
Номер тесту |
a | b | c | d | f | S |
1 | 3.0 | 2.0 | 4.0 | 2.1 | 3.1 | так |
2 | 3.0 | 3.0 | 3.0 | 3.1 | 2.1 | ні |
3 | 1.9 | 2.9 | 1.4 | 1.7 | 4.0 | так |
4 | 1.4 | 2.9 | 1.9 | 1.7 | 4.0 | так |
5 | 5.0 | 1.4 | 1.4 | 1.5 | 3.0 | так |
6 | 1.4 | 5.0 | 5.0 | 2.0 | 2.0 | ні |
7 | 1.5 | 3.5 | 3.5 | 4.0 | 1.7 | так |
8 | 1.5 | 3.5 | 1.5 | 4.0 | 1.7 | так |
Журі оцінило надіслані розв'язки наступним чином:
№ | Учасник | Кількість балів |
1 | Антон Мишенин | 3 |
2 | Ваня Попович | 4 |
3 | Артем Пайван | 4 |
4 | Sergey Shablenko | 3 |
5 | Ивахненко Олег |
4
|
6 | Никита Ажажа * | 3 |
7 | Сергій Сальніков |
4 |
8 | Юрий Дончик | 4 |
9 | Михаил Божко | 3 |
10 | RomaN * | 3 |
* До уваги учасників. Ви можете самостійно знайти помилку у надісланому Вами розв'язку, виконавши обчислення для a=100, b=40, c=5, d=50, f=10 (правильна відповідь - «так»).