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

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

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

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

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

Задача тижня 02.01.12 – 08.01.12

Zadacha_tyzhnya_khopka_zadacha_tyzhnyaZadacha_tyzhnya_khopka_2_analiz_rezultativZadacha_tyzhnya_khopka_3_reytyngZadacha_tyzhnya_khopka_4_arhiv

 

Вік

 

Дід Мороз щороку отримує багато листів із замовленнями подарунків на новий рік. Цілком зрозуміло, що всі замовлення виконати неможливо. Щоб нікого не образити, Дід Мороз діє у такий спосіб: вибирає довільний день у році і виконує побажання всіх, кому на цей день виповнилося стільки ж років, як номер вибраного дня.

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

Вхідні дані (вводяться з клавіатури)

Значення D1, M1, Y1 (число, номер місяця та рік народження користувача), D2, M2, Y2 (число, номер місяця та рік обраного Дідом Морозом дня), – натуральні числа.

Вихідні дані (виводяться на екран)

Значення S – рядок, що приймає значення «подарунок» або «треба почекати».

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

 

№ D1M1 Y1 D2 M2 Y2S
1112010112011подарунок
21120011052011подарунок
31120101052011треба почекати
4512006572011
55122006572011
6672006572011
7472006572011
8572006572011
9572001572011
105122005572011

 

 

Аналіз розв’язку задачі «Вік»

 

Вік користувача визначається як різниця номерів відповідних років, але, якщо в цьому році користувач ще не відсвяткував день народження, потрібно зменшити знайдену різницю на 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.

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

 

№D1M1Y1D2M2Y2S
1112010112011подарунок
21120011052011подарунок
31120101052011треба почекати
4512006572011подарунок
55122006572011треба почекати
6672006572011треба почекати
7472006572011подарунок
8572006572011подарунок
9572001572011треба почекати
105122005572011подарунок

 

 

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

 

№Учасник Кількість балів
1ALEX Z5 (4+1 за перевірку коректності дати)
2Kolgatin Andrey4
3RomaN4
4Макс Синкевич2
5forsh3@mail.ru4
6Юрий Дончик3 (помилка в алгоритмі, але тести проходять)