Задача тижня 02.01.12 – 08.01.12
Вік
Дід Мороз щороку отримує багато листів із замовленнями подарунків на новий рік. Цілком зрозуміло, що всі замовлення виконати неможливо. Щоб нікого не образити, Дід Мороз діє у такий спосіб: вибирає довільний день у році і виконує побажання всіх, кому на цей день виповнилося стільки ж років, як номер вибраного дня.
1. Створіть програму, яка за заданими датами дня народження користувача й обраного Дідом Морозом дня визначає, чи одержить користувач подарунок у цей день.
Вхідні дані (вводяться з клавіатури)
Значення D1, M1, Y1 (число, номер місяця та рік народження користувача), D2, M2, Y2 (число, номер місяця та рік обраного Дідом Морозом дня), – натуральні числа.
Вихідні дані (виводяться на екран)
Значення S – рядок, що приймає значення «подарунок» або «треба почекати».
2. Заповніть тестову таблицю за результатами роботи програми
| № | D1 | M1 | Y1 | D2 | M2 | Y2 | S |
| 1 | 1 | 1 | 2010 | 1 | 1 | 2011 | подарунок |
| 2 | 1 | 1 | 2001 | 10 | 5 | 2011 | подарунок |
| 3 | 1 | 1 | 2010 | 10 | 5 | 2011 | треба почекати |
| 4 | 5 | 1 | 2006 | 5 | 7 | 2011 | |
| 5 | 5 | 12 | 2006 | 5 | 7 | 2011 | |
| 6 | 6 | 7 | 2006 | 5 | 7 | 2011 | |
| 7 | 4 | 7 | 2006 | 5 | 7 | 2011 | |
| 8 | 5 | 7 | 2006 | 5 | 7 | 2011 | |
| 9 | 5 | 7 | 2001 | 5 | 7 | 2011 | |
| 10 | 5 | 12 | 2005 | 5 | 7 | 2011 |
Аналіз розв’язку задачі «Вік»
Вік користувача визначається як різниця номерів відповідних років, але, якщо в цьому році користувач ще не відсвяткував день народження, потрібно зменшити знайдену різницю на 1. Зменшення на 1 відбувається, якщо місяць народження ще не наступив або якщо місяць співпадає з поточним, але день народження ще попереду.
V = Y2 – Y1;
якщо (M1 > M2) or (M1 = M2) and (D1 > D2)
то V = V – 1;
якщо V = D2
то S = ‘подарунок’
інакше S := ‘треба почекати’;
Нагадаємо, що при обчисленні значення складного логічного виразу
(M1 > M2) or (M1 = M2) and (D1 > D2)
спочатку виконується операція and, а потім – or.
Тестова таблиця з результатами роботи програми:
| № | D1 | M1 | Y1 | D2 | M2 | Y2 | S |
| 1 | 1 | 1 | 2010 | 1 | 1 | 2011 | подарунок |
| 2 | 1 | 1 | 2001 | 10 | 5 | 2011 | подарунок |
| 3 | 1 | 1 | 2010 | 10 | 5 | 2011 | треба почекати |
| 4 | 5 | 1 | 2006 | 5 | 7 | 2011 | подарунок |
| 5 | 5 | 12 | 2006 | 5 | 7 | 2011 | треба почекати |
| 6 | 6 | 7 | 2006 | 5 | 7 | 2011 | треба почекати |
| 7 | 4 | 7 | 2006 | 5 | 7 | 2011 | подарунок |
| 8 | 5 | 7 | 2006 | 5 | 7 | 2011 | подарунок |
| 9 | 5 | 7 | 2001 | 5 | 7 | 2011 | треба почекати |
| 10 | 5 | 12 | 2005 | 5 | 7 | 2011 | подарунок |
Журі оцінило надіслані розв’язки наступним чином:
| № | Учасник | Кількість балів |
| 1 | ALEX Z | 5 (4+1 за перевірку коректності дати) |
| 2 | Kolgatin Andrey | 4 |
| 3 | RomaN | 4 |
| 4 | Макс Синкевич | 2 |
| 5 | forsh3@mail.ru | 4 |
| 6 | Юрий Дончик | 3 (помилка в алгоритмі, але тести проходять) |




