Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Банківські рахунки
1. Початковий рівень. Створити консольну програму «Банківські рахунки»: реалізувати поточний і депозитний рахунки; virtual monthly. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Банківські рахунки»: реалізувати поточний і депозитний рахунки; virtual monthly, додати кредитний рахунок з явно заданою межею боргу. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Банківські рахунки»: реалізувати ієрархію рахунків (поточний, депозитний, кредитний з межею боргу) з віртуальним місячним нарахуванням monthly, портфель, місячні навчальні нарахування й підсумкові баланси. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 2. Медіатека
1. Початковий рівень. Створити консольну програму «Медіатека»: реалізувати книгу й фільм зі спільним описом. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Медіатека»: реалізувати книгу й фільм зі спільним описом, додати подкаст і пошук назви. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Медіатека»: реалізувати ієрархію медіа (книга, фільм, подкаст) зі спільним віртуальним описом, каталог із пошуком, сортуванням та звітом тривалості для відповідних видів. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 3. Персонажі гри
1. Початковий рівень. Створити консольну програму «Персонажі гри»: реалізувати воїна й мага з віртуальною дією. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Персонажі гри»: реалізувати воїна й мага з віртуальною дією, додати лучника, витрати ресурсу та відмову при нестачі. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Персонажі гри»: реалізувати ієрархію персонажів (воїн, маг, лучник) з віртуальною дією й витратою ресурсу та покроковий бій із журналом і детермінованими правилами шкоди. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 4. Товари магазину
1. Початковий рівень. Створити консольну програму «Товари магазину»: реалізувати електроніку й продукт зі спільною ціною. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Товари магазину»: реалізувати електроніку й продукт зі спільною ціною, додати гарантію та навчальний строк придатності в днях. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Товари магазину»: реалізувати ієрархію товарів (електроніка з гарантією, продукт зі строком придатності в днях) зі спільною віртуальною ціною та кошик із підсумком і відхиленням прострочених позицій. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 5. Документи
1. Початковий рівень. Створити консольну програму «Документи»: реалізувати рахунок і акт зі спільним описом. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Документи»: реалізувати рахунок і акт зі спільним описом, додати договір і унікальні номери. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Документи»: реалізувати ієрархію документів (рахунок, акт, договір) з унікальними номерами, сумою й віртуальним описом та реєстр з пошуком, друком через Base& та підсумками сум. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 6. Датчики
1. Початковий рівень. Створити консольну програму «Датчики»: реалізувати температуру й вологість з віртуальним читанням. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Датчики»: реалізувати температуру й вологість з віртуальним читанням, додати тиск і перевірку скінченності введених вимірювань. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Датчики»: реалізувати ієрархію датчиків (температура, вологість, тиск) з віртуальним читанням скінченних значень та станцію з порогами й журналом сигналізації без фізичних пристроїв. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 7. Сповіщення
1. Початковий рівень. Створити консольну програму «Сповіщення»: реалізувати навчальні email і SMS з віртуальним текстовим результатом. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Сповіщення»: реалізувати навчальні email і SMS з віртуальним текстовим результатом, додати push та пріоритет повідомлення. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Сповіщення»: реалізувати ієрархію навчальних сповіщень (email, SMS, push) з пріоритетом і віртуальним текстовим результатом та локальну імітацію розсилки з фільтрацією, без реального надсилання. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 8. Страхові поліси
1. Початковий рівень. Створити консольну програму «Страхові поліси»: реалізувати авто й житло з введеними умовними коефіцієнтами. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Страхові поліси»: реалізувати авто й житло з введеними умовними коефіцієнтами, додати третій тип поліса і відхилення від’ємної бази. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Страхові поліси»: реалізувати ієрархію полісів (авто, житло, третій тип) з віртуальним розрахунком внеску за введеною базою й умовними коефіцієнтами та навчальний портфель без реальних страхових чи медичних рекомендацій. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 9. Музичні інструменти
1. Початковий рівень. Створити консольну програму «Музичні інструменти»: реалізувати струнний і духовий зі спільним play. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Музичні інструменти»: реалізувати струнний і духовий зі спільним play, додати ударний і гучність 0–100. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Музичні інструменти»: реалізувати ієрархію інструментів (струнний, духовий, ударний) з гучністю 0–100 і віртуальним play та оркестр із порядком партій і поліморфним текстовим виступом. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 10. Персонал університету
1. Початковий рівень. Створити консольну програму «Персонал університету»: реалізувати викладача й лаборанта зі спільним навантаженням. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Персонал університету»: реалізувати викладача й лаборанта зі спільним навантаженням, додати адміністратора та перевірку годин. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Персонал університету»: реалізувати ієрархію персоналу (викладач, лаборант, адміністратор) з віртуальним навантаженням у годинах та відомість персоналу з підсумками за явно заданими навчальними формулами. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 11. Шахові фігури
1. Початковий рівень. Створити консольну програму «Шахові фігури»: реалізувати короля й коня з перевіркою геометрії ходу. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Шахові фігури»: реалізувати короля й коня з перевіркою геометрії ходу, додати слона та контроль меж дошки. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Шахові фігури»: реалізувати ієрархію фігур (король, кінь, слон) з віртуальною перевіркою геометрії ходу в межах дошки та дошку з перешкодами й забороною ходу на свою фігуру без правил шаху. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 12. Доставка
1. Початковий рівень. Створити консольну програму «Доставка»: реалізувати кур’єра й самовивіз із віртуальною ціною. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Доставка»: реалізувати кур’єра й самовивіз із віртуальною ціною, додати пошту й відмову недопустимої маси. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Доставка»: реалізувати ієрархію способів доставки (кур’єр, самовивіз, пошта) з віртуальною ціною за масою та порівняння доступних способів для набору замовлень. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 13. Навчальні платники
1. Початковий рівень. Створити консольну програму «Навчальні платники»: реалізувати два види з введеними умовними ставками. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Навчальні платники»: реалізувати два види з введеними умовними ставками, додати третій вид і спільну перевірку невід’ємної бази. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Навчальні платники»: реалізувати ієрархію трьох видів навчальних платників з віртуальним нарахуванням за невід’ємною базою й введеними умовними ставками та таблицю нарахувань, явно не реальну податкову декларацію. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 14. Спортивна команда
1. Початковий рівень. Створити консольну програму «Спортивна команда»: реалізувати гравця й воротаря зі спільною статистикою. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Спортивна команда»: реалізувати гравця й воротаря зі спільною статистикою, додати тренера з іншим підсумковим показником. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Спортивна команда»: реалізувати ієрархію членів команди (гравець, воротар, тренер) з віртуальним підсумковим показником та реєстр команди без змішування несумісних метрик у випадковому рейтингу. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 15. Номери готелю
1. Початковий рівень. Створити консольну програму «Номери готелю»: реалізувати стандарт і люкс з ціною доби. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Номери готелю»: реалізувати стандарт і люкс з ціною доби, додати апартаменти та додаткові місця. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Номери готелю»: реалізувати ієрархію номерів (стандарт, люкс, апартаменти з додатковими місцями) з віртуальною ціною доби, вартість бронювань і звіт завантаження за цілими днями. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 16. Пункти меню
1. Початковий рівень. Створити консольну програму «Пункти меню»: реалізувати страву й напій зі спільною вартістю. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Пункти меню»: реалізувати страву й напій зі спільною вартістю, додати комплекс з фіксованою навчальною знижкою. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Пункти меню»: реалізувати ієрархію пунктів меню (страва, напій, комплекс зі знижкою) з віртуальною вартістю та замовлення столика й чек через колекцію unique_ptr. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 17. Роботи
1. Початковий рівень. Створити консольну програму «Роботи»: реалізувати прибиральника й доставника зі спільним кроком. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Роботи»: реалізувати прибиральника й доставника зі спільним кроком, додати охоронця й ліміт заряду. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Роботи»: реалізувати ієрархію роботів (прибиральник, доставник, охоронець) з віртуальним кроком і лімітом заряду та симуляцію зміни з журналом дій і відмов при розряді. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 18. Рослини
1. Початковий рівень. Створити консольну програму «Рослини»: реалізувати два види з різним інтервалом поливу. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Рослини»: реалізувати два види з різним інтервалом поливу, додати третій вид і дату останнього поливу як номер дня. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Рослини»: реалізувати ієрархію трьох видів рослин з різним віртуальним інтервалом поливу й днем останнього поливу та навчальний календар поливу без агрономічних рекомендацій. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 19. Ігрова зброя
1. Початковий рівень. Створити консольну програму «Ігрова зброя»: реалізувати ближню й дальню атаку з віртуальною шкодою. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Ігрова зброя»: реалізувати ближню й дальню атаку з віртуальною шкодою, додати магічну атаку та витрату ресурсу. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Ігрова зброя»: реалізувати ієрархію зброї (ближня, дальня, магічна атака) з віртуальною шкодою й витратою ресурсу та серію атак з явними формулами й відмовою нестачі боєзапасу. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 20. Тестові питання
1. Початковий рівень. Створити консольну програму «Тестові питання»: реалізувати питання так/ні й числове зі спільною оцінкою. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Тестові питання»: реалізувати питання так/ні й числове зі спільною оцінкою, додати питання вибору й валідацію відповіді. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Тестові питання»: реалізувати ієрархію питань (так/ні, числове, вибір) з віртуальною оцінкою й валідацією відповіді, тест, підсумковий бал і розбір відповідей через поліморфний набір. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 21. Дерево виразу
1. Початковий рівень. Створити консольну програму «Дерево виразу»: реалізувати число й додавання з virtual evaluate. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Дерево виразу»: реалізувати число й додавання з virtual evaluate, додати множення та невласницькі спостерігачі за піддеревами. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Дерево виразу»: реалізувати ієрархію вузлів виразу (число, додавання, множення) з virtual evaluate, дерево з unique_ptr, обчислення і спрощення додавання нуля. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 22. Способи оплати
1. Початковий рівень. Створити консольну програму «Способи оплати»: реалізувати картку й готівку з умовною комісією. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Способи оплати»: реалізувати картку й готівку з умовною комісією, додати третій локальний макет і ліміти. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Способи оплати»: реалізувати ієрархію способів оплати (картка, готівка, третій локальний макет) з лімітами й віртуальною умовною комісією та порівняння комісій без мережі й справжніх платежів. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 23. Підписки
1. Початковий рівень. Створити консольну програму «Підписки»: реалізувати базову й сімейну з місячною ціною. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Підписки»: реалізувати базову й сімейну з місячною ціною, додати преміум та ліміт користувачів. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Підписки»: реалізувати ієрархію підписок (базова, сімейна, преміум) з місячною ціною й лімітом користувачів, навчальний рахунок набору підписок і зміни плану. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 24. Лабораторні записи
1. Початковий рівень. Створити консольну програму «Лабораторні записи»: реалізувати два типи синтетичних вимірювань з описом. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Лабораторні записи»: реалізувати два типи синтетичних вимірювань з описом, додати третій тип і перевірку одиниць. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Лабораторні записи»: реалізувати ієрархію трьох типів синтетичних лабораторних вимірювань з одиницями й віртуальним описом та каталог навчальних записів без медичних норм, діагнозів чи висновків. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 25. Нерухомість
1. Початковий рівень. Створити консольну програму «Нерухомість»: реалізувати квартиру й ділянку з умовною оцінкою. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Нерухомість»: реалізувати квартиру й ділянку з умовною оцінкою, додати будинок і перевірку площі. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Нерухомість»: реалізувати ієрархію нерухомості (квартира, ділянка, будинок) з площею й віртуальною умовною оцінкою та порівняльний навчальний каталог із введеними цінами, не ринкову оцінку. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 26. Геометричні тіла
1. Початковий рівень. Створити консольну програму «Геометричні тіла»: реалізувати куб і циліндр з віртуальним об’ємом. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Геометричні тіла»: реалізувати куб і циліндр з віртуальним об’ємом, додати конус і площу поверхні. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Геометричні тіла»: реалізувати ієрархію тіл (куб, циліндр, конус) з віртуальними об’ємом і площею поверхні, колекцію тіл, суми об’ємів і відхилення некоректних розмірів. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 27. Транспортні квитки
1. Початковий рівень. Створити консольну програму «Транспортні квитки»: реалізувати разовий і багаторазовий квитки. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Транспортні квитки»: реалізувати разовий і багаторазовий квитки, додати пільговий і контроль використаних поїздок. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Транспортні квитки»: реалізувати ієрархію квитків (разовий, багаторазовий, пільговий) з віртуальною валідацією й лічильником поїздок та реєстр валідацій із забороною повторного використання разового. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 28. Електроприлади
1. Початковий рівень. Створити консольну програму «Електроприлади»: реалізувати лампу й нагрівач із потужністю. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Електроприлади»: реалізувати лампу й нагрівач із потужністю, додати режими роботи та години використання. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Електроприлади»: реалізувати ієрархію приладів (лампа, нагрівач) з потужністю, режимами й годинами використання та таблицю енергії й вартості за введеним умовним тарифом. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 29. Ігрові рівні
1. Початковий рівень. Створити консольну програму «Ігрові рівні»: реалізувати два види перешкод із virtual pass. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Ігрові рівні»: реалізувати два види перешкод із virtual pass, додати третю перешкоду й ресурс героя. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Ігрові рівні»: реалізувати ієрархію перешкод рівня (три види) з virtual pass, що витрачає ресурс героя, та послідовне проходження з журналом і детермінованими відмовами. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Варіант 30. Ієрархія винятків
1. Початковий рівень. Створити консольну програму «Ієрархія винятків»: реалізувати AppError і ValidationError. Дані ввести з клавіатури; виконати спільну операцію через базове посилання й вивести результат. Додати віртуальний деструктор та override.
2. Базовий рівень. Створити консольну програму «Ієрархія винятків»: реалізувати AppError і ValidationError, додати NotFoundError та правильний порядок catch. Ввести дані з клавіатури, зберегти різні види через unique_ptr<Base> і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
3. Високий рівень. Створити консольний проєкт «Ієрархія винятків»: реалізувати ієрархію винятків AppError, ValidationError і NotFoundError з правильним порядком catch та обробку команд із типізованими помилками й статистикою відмов. Вхідні записи й команди читати до end; --help описує формати. Використати поліморфну колекцію єдиних власників, перевірити контракт кожного виду через базовий інтерфейс. Вивести таблицю результатів і підсумки; помилки спрямувати в std::cerr, код 1 при некоректному вході. Перевірити порожню колекцію, змішані типи й завершення життя похідних об’єктів.
Порядок виконання та захисту роботи
- Записати вхідні дані, формат результату й інваріанти класів; скласти приклади звичайних, порожніх, граничних та помилкових даних.
- Визначити публічний інтерфейс і відповідальність кожного класу. Пояснити, хто володіє кожним ресурсом і коли закінчується його життя.
- Реалізувати окремий консольний проєкт. Перевірити аргументи до зміни стану; повідомлення про помилки спрямувати в
std::cerr. - Зібрати з
/std:c++latest /EHsc /W4 /utf-8, усунути попередження; виконати підготовлені перевірки без вимкненняassert. - Порівняти результати з ручними розрахунками. Переконатися, що помилка не залишає об’єкт у стані, який порушує його контракт.
- Підготувати звіт із кодом, командою збирання, фактичними результатами, таблицею тестів та поясненням обмежень. Зберегти зміни в Git.
- На захисті пояснити обраний інтерфейс, виконати новий граничний випадок і показати, як зміна вимоги впливає на реалізацію.