Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Конкретні тестові дані, якщо вони не задані, оберіть і наведіть у звіті. Навчальні приклади не призначені для роботи з реальними обліковими даними або сторонніми файлами.
Варіанти
Варіант 1. Узагальнена матриця
1. Початковий рівень. Створити консольну програму. Реалізувати Matrix<T,R,C> на std::array з доступом at; перевірити int і double та вихід за межі. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Matrix<T,R,C> з додаванням однакових розмірів; перевірити дві матриці 2×3 і відмову для 2×2. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати множення Matrix<T,R,K> на Matrix<T,K,C>. Обмежити арифметичні операції концептом, перевірити результат 2×3 на 3×2 і негативний тест несумісних розмірів. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 2. Кільцевий буфер
1. Початковий рівень. Створити консольну програму. Створити RingBuffer<T,N> з додаванням і читанням першого елемента; при переповненні відмовляти, перевірити N=2. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити RingBuffer<T,N> з витісненням найстарішого елемента; для місткості 3 додати 1, 2, 3, 4 і отримати 2, 3, 4. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити RingBuffer<T,N> для move-only значень з перевіркою концептом. Задати політику відмови при переповненні, перевірити N=0, N=1 та переміщення unique_ptr без копіювання. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 3. Черга з пріоритетом
1. Початковий рівень. Створити консольну програму. Реалізувати PriorityQueue<T,Compare> на vector з пошуком найпріоритетнішого; перевірити числа 5, 1, 3. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати PriorityQueue<T,Compare> для навчальних завдань з пріоритетом і номером надходження; за рівності обслуговувати раніше додане. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати PriorityQueue<T,Compare> з концептом викличного компаратора. Порівняти максимальний і мінімальний порядок, перевірити порожню чергу й негативний тест невалідного компаратора. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 4. Інтервал
1. Початковий рівень. Створити консольну програму. Створити Interval<T> для totally_ordered типів із перевіркою left<=right та contains; межі включені. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Interval<T> із перетином замкнених інтервалів; повертати optional. Перевірити [1,3] і [3,5], а також неперетинні межі. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити шаблон бронювань на напіввідкритих Interval<T>. Визначити конфлікт без включення правої межі, відхиляти порожнє бронювання, перевірити суміжні й вкладені інтервали. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 5. Дріб над цілими
1. Початковий рівень. Створити консольну програму. Реалізувати Fraction<integral T> для додатних знаменників; перевірити нульовий знаменник і друк чисельника/знаменника. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Fraction<T> зі скороченням через gcd і додаванням для int та long long; використовувати невеликі значення без переповнення. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати Fraction<T> зі знаковим цілим T, нормалізацією знака, додаванням і множенням. Сформулювати допустимі межі чисел і перевірити нуль, від’ємні дроби та відмову для double. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 6. Поліном
1. Початковий рівень. Створити консольну програму. Створити Polynomial<T> з коефіцієнтами у vector та обчисленням за схемою Горнера для int і double. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Polynomial<T> із додаванням поліномів різного степеня та Горнером; нульовий поліном подати явно. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Polynomial<T> з концептом операцій нуля, додавання й множення. Перевірити double і власний Complex на x²+1; вказати порядок коефіцієнтів та перевірити порожню послідовність. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 7. Геометричний вектор
1. Початковий рівень. Створити консольну програму. Реалізувати Vec<N,T> з додаванням координат; перевірити N=2 для int і double. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Vec<N,T> зі скалярним добутком і нормою double; перевірити (3,4) та нульовий вектор. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати Vec<N,T> з числовим концептом, нормою і нормалізацією до Vec<N,double>. Відхиляти нормалізацію нуля та компіляцію добутку різних N. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 8. Гістограма
1. Початковий рівень. Створити консольну програму. Створити Histogram<T> для трьох явних інтервалів [0,10), [10,20), [20,30); рахувати також значення поза ними. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Histogram<T> із впорядкованими межами в vector; останню праву межу включити. Перевірити всі граничні значення. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Histogram<T> з числовим концептом і довільними строго зростаючими межами; друкувати кількості та частки, порожній набір не ділити на нуль. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 9. Сильні ідентифікатори
1. Початковий рівень. Створити консольну програму. Реалізувати StrongId<Tag> над int і створити UserTag та BookTag; надрукувати два ID. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати StrongId<Tag> з рівністю та порядком лише однакових тегів; перевірити негативний тест порівняння користувача і книги. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати StrongId<Tag> з перевіркою додатності та функцією пошуку запису за типізованим ключем. Довести негативним тестом заборону передавання BookId до пошуку UserId. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 10. Бінарне дерево пошуку
1. Початковий рівень. Створити консольну програму. Створити BST<T> з unique_ptr вузлів, вставкою та пошуком; дублікати ігнорувати. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити BST<T> з вимогою порядку та симетричним обходом; перевірити int і string, порожнє дерево та дублікати. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити BST<T,Compare> з пошуком і видаленням вузла, включаючи випадок двох нащадків. Перевірити корінь, листок і відсутній ключ; обмежити компаратор концептом. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 11. Зв’язний список
1. Початковий рівень. Створити консольну програму. Реалізувати List<T> на unique_ptr із push_front і виведенням для int та string. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати List<T> з видаленням першого входження значення та підрахунком довжини; перевірити порожній список. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати List<T> з глибоким копіюванням та переміщенням. Перевірити незалежність копій, самоприсвоювання, порожній стан і негативний тест копіювання move-only T. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 12. Табличний вивід
1. Початковий рівень. Створити консольну програму. Написати variadic row, який друкує аргументи з роздільником; перевірити нуль, один і три аргументи. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати variadic row із однаковою мінімальною шириною полів і fold через кому; перевірити довгі рядки та порожній пакет. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити типізований вивід рядка з окремою шириною для кожного поля, кількості полів перевіряти через static_assert. Перевірити змішані типи й негативний тест різних кількостей. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 13. Типізований журнал
1. Початковий рівень. Створити консольну програму. Написати variadic log з рівнем INFO/WARN і друком аргументів через fold; без глобального змінного стану. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати log(std::format_string<Args...>,Args&&...) із перевіркою формату під час компіляції; продемонструвати два рівні та неправильний формат в окремому файлі. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати шаблон Logger<Sink> з концептом приймача рядка, фільтром рівня та перевіреним format_string. Перевірити консольний і накопичувальний приймачі та відсутність відфільтрованого повідомлення. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 14. Кеш значень
1. Початковий рівень. Створити консольну програму. Створити Cache<K,V> на vector пар з put/get; відсутній ключ позначати optional. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Cache<K,V> із лімітом 3, оновленням наявного ключа та FIFO-витісненням; перевірити ключі int і string. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Cache<K,V> з концептом рівності ключів, статистикою влучань та FIFO-витісненням. Перевірити нульову місткість, повторний ключ і точне значення hit-rate без ділення на нуль. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 15. Статистика вимірювань
1. Початковий рівень. Створити консольну програму. Написати Numeric mean для vector<int> та vector<double>; відхиляти порожню вибірку. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати шаблон медіани копії числової вибірки; для парної кількості брати середнє двох центральних без цілочислового ділення. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Numeric statistics із медіаною, усіма модами та генеральною дисперсією (ділення на n). Перевірити порожні дані, всі однакові значення і кілька мод. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 16. Узагальнений бінарний пошук
1. Початковий рівень. Створити консольну програму. Реалізувати пошук у відсортованому std::array<T,N>, повертати optional індекс; перевірити межі та відсутність. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати шаблон двійкового пошуку для колекції із size й індексуванням; перевірити array і власну обгортку. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Написати пошук першого входження з компаратором-концептом у відсортованій колекції; перевірити дублікати, порожні дані і зворотний порядок із відповідним компаратором. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 17. Бітовий набір
1. Початковий рівень. Створити консольну програму. Створити Bits<N> на array<bool,N> з set/test та перевіркою індексу. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Bits<N> з об’єднанням і перетином однакових N; перевірити N=0 та неперетинні множини. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Bits<N> на масиві цілих блоків з доповненням і підрахунком одиниць. Невикористані біти останнього блока не рахувати; перевірити N=1, 64, 65. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 18. Грошові суми
1. Початковий рівень. Створити консольну програму. Створити Money<Currency> у цілих копійках/центах і теги UAH/USD; надрукувати дві суми. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Money<Currency> з додаванням однакової валюти; перевірити заборону UAH+USD окремим негативним тестом. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити явний конвертер Money<From> у Money<To> за додатним курсом і округленням до найближчої мінімальної одиниці. Курс навчальний, межі сум обмежені; перевірити 0 і половинний випадок. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 19. Граф
1. Початковий рівень. Створити консольну програму. Реалізувати Graph<Vertex> як список пар ребер і пошук сусідів; перевірити int і string. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Graph<Vertex> на unordered_map із концептом хешованості та рівності, додаванням неорієнтованих ребер без дублікатів. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати Graph<Vertex> з BFS і найкоротшим шляхом за кількістю ребер; перевірити незв’язність, петлю, невідомий старт та власний хешований тип вершини. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 20. Необов’язкове значення
1. Початковий рівень. Створити консольну програму. Створити навчальний Maybe<T> на std::optional<T> з has_value/value_or; перевірити порожній і заповнений стан. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Maybe<T> як явний адаптер optional з reset/emplace; перевірити int і string, заборонити неперевірений доступ. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Maybe<T> з map(F), що повертає Maybe результату виклику. Концептом перевіряти викличність; порожнє значення не повинно викликати F. Перевірити лічильником викликів. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 21. Система подій
1. Початковий рівень. Створити консольну програму. Створити Event<int> з vector функцій-підписників; викликати двох слухачів одним числом. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Event<Args...> з передаванням параметрів двом підписникам; перевірити пакети int,string та порожній. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати Event<Args...> з ID підписки та відпискою. Заборонити зміну підписок під час розсилання або працювати зі знімком; описати політику винятків і перевірити її. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 22. Розріджена матриця
1. Початковий рівень. Створити консольну програму. Створити SparseMatrix<T> з vector трійок row,column,value, фіксованими розмірами й поверненням T{} для відсутнього елемента. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити SparseMatrix<T> із set, що видаляє нульовий запис, та додаванням однакових розмірів; перевірити скасування значень. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити SparseMatrix<T> з концептом додавання, множення і нуля; реалізувати множення сумісних матриць і перевірити відсутність явних нулів у результаті. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 23. Кортеж-друк
1. Початковий рівень. Створити консольну програму. Написати друк tuple<int,double,string> через std::get, пояснити тип кожного поля. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати шаблон рекурсивного друку tuple довільної довжини через індекс часу компіляції; перевірити порожній tuple. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Написати друк tuple через std::apply і fold та порівняти з рекурсивним варіантом. Перевірити 0, 1, 4 поля, порядок і відсутність зайвого роздільника. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 24. Мін-макс-купа
1. Початковий рівень. Створити консольну програму. Створити контейнер MinMaxHeap<T> з vector та пошуком мінімуму/максимуму лінійним проходом; назвати фактичну складність. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати MinMaxHeap<T> з extract_min/extract_max без вимоги купової складності; перевірити дублікати та порожній стан. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати справжню мін-макс-купу з чергуванням рівнів, логарифмічним вилученням обох екстремумів і концептом порядку. Перевірити інваріант після кожної операції на 20 значеннях. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 25. Вимірювані величини
1. Початковий рівень. Створити консольну програму. Створити Quantity<Tag,T> для маси, довжини й часу, з додаванням лише однакового тегу. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити шаблон величини з трьома цілими показниками розмірності; додавати лише однакові розмірності. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити величини з показниками маси, довжини й часу; множення додає показники, ділення віднімає. Перевірити швидкість і прискорення та негативний тест додавання довжини до часу. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 26. Узагальнене сортування
1. Початковий рівень. Створити консольну програму. Написати insertion_sort для vector<T> з оператором <; перевірити int і string. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Написати insertion_sort з компаратором; відсортувати навчальні записи за балом, зберігши порядок рівних. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Написати insertion_sort із концептом strict_weak_order та перевірити стабільність за двома полями. Вказати, які семантичні порушення компаратора концепт не виявляє; перевірити порожні дані. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 27. Таблиця рекордів
1. Початковий рівень. Створити консольну програму. Створити Leaderboard<Score> з іменем і числовим балом; знайти найкращого для int та double. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Leaderboard<Score> з top(k), за рівних балів сортувати імена; перевірити k=0 та k понад кількість учасників. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Leaderboard<Score> з оновленням лише кращого результату, ранжуванням із однаковим рангом при нічиїй та числовим концептом. Для double відхиляти NaN. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 28. Валідатор діапазону
1. Початковий рівень. Створити консольну програму. Реалізувати Bounded<T,Min,Max> для integral T з перевіркою Min<=Max під час компіляції і значення в конструкторі. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Реалізувати Bounded<T,Min,Max> з контрольованим set без зміни стану при відмові; перевірити межі й вихід на одиницю. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Реалізувати Bounded<T,Min,Max> з додаванням, яке спершу перевіряє машинне переповнення й дозволений діапазон. Перевірити вузький діапазон і крайні значення типу. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 29. Перетворювач рядків
1. Початковий рівень. Створити консольну програму. Створити parse<T> зі спеціалізацією int; вимагати повне споживання рядка, перевірити 42 та 42x. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити parse<T> зі спеціалізаціями int і double та результатом optional; відхиляти порожній рядок і переповнення. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити parse<T> для int, double, bool із явними правилами true/false і повним споживанням. Непідтриманий тип відхиляти під час компіляції; перевірити пробіли, хвіст та межі. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Варіант 30. Узагальнений склад
1. Початковий рівень. Створити консольну програму. Створити Inventory<Item> на vector з концептом наявності price(); обчислити суму двох товарів. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
2. Базовий рівень. Створити консольну програму. Створити Inventory<Item> із HasPrice, кількістю та загальною вартістю; перевіряти невід’ємні ціни й кількості. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
3. Високий рівень. Створити консольну програму. Створити Inventory<Item> з концептом const price(), пошуком за кодом і звітом дефіциту. Перевірити два різні типи товарів та негативний тест відсутнього price; суму рахувати у мінімальних грошових одиницях. Дані для демонстрації задати в коді; вивести результати операцій і повідомлення перевірок.
Порядок виконання роботи
- Зберіть приклади, порівняйте результати з наведеними.
- Створіть окрему програму для обраного рівня свого варіанта.
- Запишіть вимоги, допустимі дані й очікувані результати до реалізації.
- Перевірте звичайний, порожній і граничний випадки, які мають сенс для задачі.
- Збережіть код, команди збирання й результати перевірок у локальному Git.
Для негативних тестів створіть окремі файли. У звіті порівняйте діагностику з концептом і без нього, поясніть кожен потрібний параметр шаблону.
Вимоги до звіту
Подайте умову обраного завдання, рішення з поясненням інваріантів, команду збирання, версію MSVC, контрольні дані та справжнє виведення. Для очікуваних помилок відокремте негативний тест від робочої програми. Поясніть причину відмови й виправлення; самого знімка Error List недостатньо.