Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Студент
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Студент»: реалізувати ім’я й три бали 0–100; середній бал. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Студент», що реалізує ім’я й три бали 0–100; середній бал, а також додавання оцінки та відхилення балів поза межами. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Студент»: реалізувати клас студента з ім’ям і трьома балами 0–100 та групу студентів із рейтингом за середнім балом і стабільним порядком однакових балів. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 2. Книга
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Книга»: реалізувати назву, інвентарний номер і стан видачі. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Книга», що реалізує назву, інвентарний номер і стан видачі, а також видачу й повернення за цілими номерами днів без подвійної видачі. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Книга»: реалізувати клас книги з назвою, інвентарним номером і станом видачі, каталог книг, видачу й повернення за номерами днів, строки повернення й навчальний штраф 2 одиниці за день прострочення. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 3. Дата
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Дата»: реалізувати рік 2000–2099, місяць і день; перевірку календарної дати. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Дата», що реалізує рік 2000–2099, місяць і день; перевірку календарної дати, а також додавання невід’ємної кількості днів та високосний лютий. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Дата»: реалізувати клас дати з роком 2000–2099, місяцем і днем та перевіркою календарної дати, журнал подій, різницю дат у днях і хронологічне сортування. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 4. Прямокутник
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Прямокутник»: реалізувати координати лівого нижнього кута й додатні сторони; площу. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Прямокутник», що реалізує координати лівого нижнього кута й додатні сторони; площу, а також переміщення і масштабування додатним коефіцієнтом. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Прямокутник»: реалізувати клас прямокутника з координатами лівого нижнього кута й додатними сторонами, набір прямокутників і попарні перетини, де дотик має нульову площу. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 5. Автомобіль
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Автомобіль»: реалізувати місткість бака, пальне й пробіг; заправку. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Автомобіль», що реалізує місткість бака, пальне й пробіг; заправку, а також поїздку з витратою 8 літрів на 100 км без від’ємного запасу. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Автомобіль»: реалізувати клас автомобіля з місткістю бака, пальним і пробігом, заправку й поїздки, журнал поїздок, сумарну відстань і середню витрату за фактичними даними. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 6. Товар і кошик
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Товар і кошик»: реалізувати товар із назвою та ціною в копійках; вартість кількості. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Товар і кошик», що реалізує товар із назвою та ціною в копійках; вартість кількості, а також кошик із позиціями й знижкою 0–50 відсотків. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Товар і кошик»: реалізувати клас товару з назвою та ціною в копійках, кошик із кількостями та замовлення з підсумком, навчальним податком 20 відсотків та округленням до копійки. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 7. Лічильник води
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Лічильник води»: реалізувати попереднє й нове невід’ємні показання; споживання. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Лічильник води», що реалізує попереднє й нове невід’ємні показання; споживання, а також монотонні показання та тариф у копійках за одиницю. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Лічильник води»: реалізувати клас лічильника води з монотонними невід’ємними показаннями й тарифом у копійках, історію місяців, зміну тарифу з наступного запису та звіт нарахувань. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 8. Ліфт
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Ліфт»: реалізувати поточний поверх у будинку 1–9; перехід на поверх. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Ліфт», що реалізує поточний поверх у будинку 1–9; перехід на поверх, а також чергу викликів без повторів і один крок руху. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Ліфт»: реалізувати клас ліфта з поточним поверхом у будинку 1–9 і чергою викликів та покрокову симуляцію кількох ліфтів із призначенням найближчого вільного. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 9. Світлофор
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Світлофор»: реалізувати стан red/green/yellow і наступний стан. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Світлофор», що реалізує стан red/green/yellow і наступний стан, а також тривалості фаз і зміну стану за цілим часом. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Світлофор»: реалізувати клас світлофора зі станами red/green/yellow і тривалостями фаз та два світлофори перехрестя з інваріантом відсутності одночасного зеленого. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 10. Готельний номер
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Готельний номер»: реалізувати номер, місткість і ціну доби; вартість перебування. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Готельний номер», що реалізує номер, місткість і ціну доби; вартість перебування, а також бронювання напіввідкритих інтервалів цілих днів без перетину. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Готельний номер»: реалізувати клас готельного номера з місткістю, ціною доби й бронюваннями напіввідкритих інтервалів днів без перетину, готель із номерами та звіт зайнятості для заданого інтервалу. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 11. Плейлист
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Плейлист»: реалізувати трек із назвою й додатною тривалістю; список. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Плейлист», що реалізує трек із назвою й додатною тривалістю; список, а також додавання, видалення за номером і загальну тривалість. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Плейлист»: реалізувати клас треку з назвою й додатною тривалістю, плейлист із додаванням і видаленням, пошук назв, перемішування з явним seed та збереження первинного порядку. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 12. Фітнес-трекер
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Фітнес-трекер»: реалізувати денні кроки й ціль; відсоток виконання. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Фітнес-трекер», що реалізує денні кроки й ціль; відсоток виконання, а також сім денних записів без повторних дат і середнє. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Фітнес-трекер»: реалізувати клас фітнес-трекера з денними записами кроків за датами й ціллю, тижневий звіт, серію досягнення цілі та навчальну оцінку 0,04 ккал на крок. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 13. Співробітник
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Співробітник»: реалізувати ім’я, посаду та оклад у копійках; картку. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Співробітник», що реалізує ім’я, посаду та оклад у копійках; картку, а також премію 0–100 відсотків і загальну навчальну виплату. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Співробітник»: реалізувати клас співробітника з ім’ям, посадою, окладом у копійках і премією 0–100 відсотків, відділ, відомість виплат і підсумок без реальних податкових правил. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 14. Рецепт
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Рецепт»: реалізувати назву, кількість порцій та маси інгредієнтів; список. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Рецепт», що реалізує назву, кількість порцій та маси інгредієнтів; список, а також масштабування на додатне число порцій. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Рецепт»: реалізувати клас рецепта з назвою, кількістю порцій та масами інгредієнтів, набір рецептів, список закупівель і калорійність із введених коефіцієнтів. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 15. Метеостанція
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Метеостанція»: реалізувати скінченні вимірювання температури; середнє. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Метеостанція», що реалізує скінченні вимірювання температури; середнє, а також мінімум, максимум і відхилення порожньої серії. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Метеостанція»: реалізувати клас метеостанції зі скінченними вимірюваннями температури з часом, середнє, мінімум і максимум, тренд між першою й останньою точкою та звіт. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 16. Вектор на площині
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Вектор на площині»: реалізувати скінченні x і y; довжину. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Вектор на площині», що реалізує скінченні x і y; довжину, а також суму, масштабування та проєкцію на ненульовий вектор методами. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Вектор на площині»: реалізувати клас вектора на площині зі скінченними x і y, траєкторію з векторів, сумарне зміщення й кути між ненульовими ділянками. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 17. Коло
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Коло»: реалізувати центр і додатний радіус; площу. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Коло», що реалізує центр і додатний радіус; площу, а також належність точки з включеною межею. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Коло»: реалізувати клас кола з центром і додатним радіусом, набір кіл та класифікацію пар: окремі, дотичні, перетинаються, вкладені. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 18. Курс навчання
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Курс навчання»: реалізувати назву курсу й додатний ліміт; кількість місць. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Курс навчання», що реалізує назву курсу й додатний ліміт; кількість місць, а також запис за унікальним студентським номером та відрахування. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Курс навчання»: реалізувати клас курсу з назвою й додатним лімітом місць, запис за унікальним студентським номером, відрахування та список очікування FIFO з автоматичним заповненням звільненого місця. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 19. Кавова машина
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Кавова машина»: реалізувати запаси води й зерна; приготування порції 100 мл і 10 г. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Кавова машина», що реалізує запаси води й зерна; приготування порції 100 мл і 10 г, а також два рецепти, поповнення й відмову без часткового списання. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Кавова машина»: реалізувати клас кавової машини із запасами води й зерна, меню рецептів, облік продажів і залишки ресурсів після команд без часткового списання. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 20. Гральні кості
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Гральні кості»: реалізувати кістку з 6 гранями й генератором із введеним seed; кидок. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Гральні кості», що реалізує кістку з 6 гранями й генератором із введеним seed; кидок, а також набір п’яти костей і частоти значень за серію. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Гральні кості»: реалізувати клас кістки з 6 гранями й генератором із введеним seed, набір п’яти костей і гру з двома повторними кидками обраних костей та оцінкою однакових граней. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 21. Бібліотечна картка
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Бібліотечна картка»: реалізувати номер читача й ліміт 3 книги; кількість виданих. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Бібліотечна картка», що реалізує номер читача й ліміт 3 книги; кількість виданих, а також видачу й повернення унікальних номерів книг. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Бібліотечна картка»: реалізувати клас бібліотечної картки з номером читача й лімітом 3 книги, видачу й повернення унікальних номерів книг та історію з днями операцій, активними видачами й відхиленими запитами. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 22. Таймер кухні
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Таймер кухні»: реалізувати цілу тривалість у секундах; залишок після кроку. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Таймер кухні», що реалізує цілу тривалість у секундах; залишок після кроку, а також стани ready/running/done і повторний запуск. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Таймер кухні»: реалізувати клас таймера з цілою тривалістю в секундах і станами ready/running/done та кілька іменованих таймерів із дискретними кроками часу та одноразовими сигналами. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 23. Акумулятор телефону
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Акумулятор телефону»: реалізувати ємність і поточний заряд; відсоток. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Акумулятор телефону», що реалізує ємність і поточний заряд; відсоток, а також заряджання й розряд із перевіркою меж. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Акумулятор телефону»: реалізувати клас акумулятора з ємністю й поточним зарядом, заряджання й розряд у межах, журнал навантажень та прогноз часу за сталої введеної потужності, нуль окремо. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 24. Гараж
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Гараж»: реалізувати місткість і список номерів; вільні місця. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Гараж», що реалізує місткість і список номерів; вільні місця, а також в’їзд і виїзд із цілими хвилинами без від’ємного часу. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Гараж»: реалізувати клас гаража з місткістю й номерами авто, в’їзд і виїзд у цілих хвилинах, оплату 2 одиниці за кожну розпочату годину та підсумок зміни. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 25. Піца
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Піца»: реалізувати розмір small/large і базову ціну; опис. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Піца», що реалізує розмір small/large і базову ціну; опис, а також добавки з цінами без повторних назв. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Піца»: реалізувати клас піци з розміром small/large, базовою ціною й добавками без повторних назв, замовлення кількох піц, вилучення добавки та підсумковий чек. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 26. Навчальна група
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Навчальна група»: реалізувати код групи й унікальні студентські номери; список. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Навчальна група», що реалізує код групи й унікальні студентські номери; список, а також призначення старости лише серед учасників. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Навчальна група»: реалізувати клас навчальної групи з кодом, унікальними студентськими номерами й старостою, відвідуваність за днями, статистику та коректну зміну старости після відрахування. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 27. Банкомат
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Банкомат»: реалізувати касети 100 і 50 одиниць із невід’ємними кількостями; запас. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Банкомат», що реалізує касети 100 і 50 одиниць із невід’ємними кількостями; запас, а також видачу суми, кратної 50, без часткової зміни касет при відмові. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Банкомат»: реалізувати клас банкомата з касетами 100, 50 і 20 з невід’ємними кількостями, видачу суми мінімумом купюр серед допустимих комбінацій без часткової зміни касет та журнал. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 28. Шахова фігура
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Шахова фігура»: реалізувати тип king/knight і клітинку 0–7; позицію. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Шахова фігура», що реалізує тип king/knight і клітинку 0–7; позицію, а також перевірку геометрично допустимого ходу без інших фігур. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Шахова фігура»: реалізувати клас шахової фігури king/knight з кольором, клітинкою 0–7 і перевіркою геометрично допустимого ходу та дошку з фігурами двох кольорів, заборону ходу на свою фігуру без правил шаху. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 29. Електронний квиток
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Електронний квиток»: реалізувати маршрут і статично виданий номер; опис. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Електронний квиток», що реалізує маршрут і статично виданий номер; опис, а також стани valid/used і одноразову валідацію. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Електронний квиток»: реалізувати клас електронного квитка з маршрутом, унікальним статично виданим номером і станами valid/used, реєстр квитків, пошук номера й журнал повторних спроб; заборонити копіювання номера. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Варіант 30. Акваріум
1. Початковий рівень. Створити консольну програму з інкапсульованим класом «Акваріум»: реалізувати об’єм і риб із вимогою літрів на особину; заповнення. Дані ввести з клавіатури; вивести стан об’єкта після створення. Некоректні аргументи відхилити в конструкторі.
2. Базовий рівень. Створити консольну програму для поняття «Акваріум», що реалізує об’єм і риб із вимогою літрів на особину; заповнення, а також додавання виду без перевищення об’єму. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
3. Високий рівень. Створити консольний проєкт «Акваріум»: реалізувати клас акваріума з об’ємом і видами риб із вимогою літрів на особину без перевищення об’єму, таблицю сумісності введених видів, облік чисельності й корму за введеними нормами. Дані та послідовність операцій зчитувати з клавіатури до команди end; --help має описувати формат. Використати композицію, конструктори з перевіркою та const-методи звіту. Вивести підсумкову таблицю, повідомляти відмови в std::cerr; завершити з кодом 1 при помилці введення. Розділити класи на .h і .cpp, перевірити незмінність стану після відмови.
Порядок виконання та захисту роботи
- Записати вхідні дані, формат результату й інваріанти класів; скласти приклади звичайних, порожніх, граничних та помилкових даних.
- Визначити публічний інтерфейс і відповідальність кожного класу. Пояснити, хто володіє кожним ресурсом і коли закінчується його життя.
- Реалізувати окремий консольний проєкт. Перевірити аргументи до зміни стану; повідомлення про помилки спрямувати в
std::cerr. - Зібрати з
/std:c++latest /EHsc /W4 /utf-8, усунути попередження; виконати підготовлені перевірки без вимкненняassert. - Порівняти результати з ручними розрахунками. Переконатися, що помилка не залишає об’єкт у стані, який порушує його контракт.
- Підготувати звіт із кодом, командою збирання, фактичними результатами, таблицею тестів та поясненням обмежень. Зберегти зміни в Git.
- На захисті пояснити обраний інтерфейс, виконати новий граничний випадок і показати, як зміна вимоги впливає на реалізацію.