Українська
Контрольні завдання
Практичні завдання за темами курсу для перевірки знань. Кожне завдання — окрема консольна програма.
Тема 1. Мова C++ і перша програма
- Створити консольну програму, яка без введення друкує дві вигадані візитні картки із заданими в коді ім’ям, групою та спеціальністю. Використати однакові рамки, перевірити вирівнювання для назв різної довжини.
- Створити консольну програму, яка виводить меню трьох напоїв із заданими в коді цінами й вартість замовлення по одному напою кожного виду. Вирівняти числовий стовпець і показати дві десяткові цифри; введення немає.
- Створити консольну програму, яка друкує розклад трьох пар із заданими в коді номерами, часом початку й закінчення та аудиторіями. Оформити заголовки й стовпці без клавіатурного введення; зберегти код першим комітом Git.
- Створити консольну програму, яка для прямокутної кімнати 3 м на 4 м обчислює площу підлоги та вартість покриття по 350 грн/м². Дані задати в коді, вивести вихідні значення й результати з одиницями, без введення.
- Створити консольну програму чека: 2 зошити по 30 грн і 3 ручки по 15 грн, знижка 10 % на всю покупку. Значення задати в коді; без введення вивести позиції, суму до знижки, знижку й суму до сплати з двома десятковими знаками.
- Створити консольну програму, яка для навчальних оцінок 72, 85 і 94 виводить таблицю дисциплін та середній бал із двома десятковими знаками. Дані задати в коді, без введення; зберегти код і
.gitignoreу локальному Git. - Створити консольну програму, яка для ділянок маршруту 3 км і 5 км та швидкості 4 км/год обчислює час руху кожною й загальний час у хвилинах. Дані задати в коді; вивести таблицю з одиницями, без введення.
- Створити консольну програму MSVC, яка без введення виводить значення
__cplusplus,_MSVC_LANGта_MSC_VER. Зібрати з/Zc:__cplusplus, записати використаний режим стандарту й пояснити призначення кожного макросу. - Створити консольну програму, яка без введення друкує вигаданий квиток із маршрутом, часом і ціною з коду. Зберегти початковий квиток і зміну часу двома комітами Git; показати різницю, ігнорувати
.exeта.obj. - Створити консольну програму, яка для групи з 20 студентів і 15 присутніх обчислює кількість відсутніх та відсоток присутності. Дані задати в коді; вивести підписані результати без введення, зібрати програму з
/W4та пояснити різницю між повідомленнями компілятора і виведенням програми.
Тема 2. Типи, операції, керування
- Створити консольну програму: ввести рік і місяць та вивести кількість днів із перевіркою номерів. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести a, b, c; обробити також лінійний, суперечливий і тотожний випадки; вивести тип розв’язку. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести число до 1000000000; вивести реверс і ознаку паліндрома, окремо обробити 0. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести хвилини 1–1440 і день тижня 1–7; округлити години вгору, застосувати 20 у будні та 15 у вихідні, вивести чек. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести код одиниці m, cm, km та невід’ємне значення; вивести метри, відхилити невідомий код. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести кількість 1–100 і бали; вивести літери A/B/C/D/E/F за межами 90/82/74/64/60 та середній бал. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести вагу
weightу 0–30 кг, цілу зонуzoneу 1–3 та терміновістьurgentяк 0 або 1; обчислитиbase = 50 + 10 * ceil(weight)іtotal = base * zone * (urgent == 1 ? 1.5 : 1.0). Вивести почату кількість кілограмів, базову ціну, обидва множники та кінцеву ціну у гривнях із двома десятковими знаками. Для нульової ваги базова ціна дорівнює 50 грн. Перевірити введення; некоректні дані пояснити повідомленням. - Створити консольну програму: ввести чисельник 0–1000000 і знаменник 1–1000000; вивести скорочений дріб. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести суму; застосувати 0 % до 1000, 5 % від 1000 і 10 % від 5000, вивести знижку та оплату. Перевірити введення; некоректні дані пояснити повідомленням.
- Створити консольну програму: ввести години 0–23 і хвилини 0–59; вивести 12-годинний формат із AM/PM. Перевірити введення; некоректні дані пояснити повідомленням.
Тема 3. Функції
- Створити консольну програму: зчитати сторони a, b, c; повернути структуру з периметром і площею Герона; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати основу double та показник 0–30; реалізувати рекурсивне піднесення діленням показника навпіл; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати межі 0–3 і точність 1e-10..1e-3; знайти корінь бісекцією з лімітом 100 кроків; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати суму, ставку 0–100 і роки 0–50; використати типовий параметр кількості нарахувань 12; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати n у 0–20 і k у 0..n; окремими функціями повернути розміщення й сполучення; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати число 2–1000000; рекурсивно вивести множники зі степенями; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати дві тривалості з годинами, хвилинами й секундами 0–1000; функціями додати й відняти їх; вивести нормалізований результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати дохід 0–1000000; повернути структуру: утримання 10 %, збір 2 %, чиста сума; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати три додатні опори в омах; перевантажити функції для двох і трьох опорів та паралельного з’єднання; вивести результат. Використати функції та перевірити передумови.
- Створити консольну програму: зчитати початкову довжину й порядок 0–15; повернути структуру з кількістю відрізків кривої Коха, довжиною відрізка та повною довжиною; вивести результат. Використати функції та перевірити передумови.
Тема 4. Масиви, рядки, vector
- Створити консольну програму: зчитати N у 2–100000; вивести кількість простих і найбільший проміжок між сусідніми; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати N, M у 1–30; заповнити матрицю N×M послідовними числами спіраллю за годинниковою стрілкою; вивести матрицю і повідомити помилки введення.
- Створити консольну програму: зчитати закодований рядок до 10000 символів у форматі
A:3,B:2: літера A–Z, двокрапка, додатна десяткова кількість, серії розділено комами; розпакувати його, відхиливши неповний формат і результат довший за 10000 символів, та вивести відновлений рядок; вивести результат і повідомити помилки введення. - Створити консольну програму: зчитати ASCII-рядок довжиною до 100; перевірити великі, малі літери, цифру та знак !?; вивести всі порушення; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати до 31 скінченного показника -100..100; обчислити ковзне середнє з непарним вікном 3 або 5 лише для повних вікон; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати до 1000 цілих балів 0–100; згрупувати їх за діапазонами 0–9, ..., 90–100 і вивести гістограму з однією зірочкою на кожен бал групи; повідомити помилки введення.
- Створити консольну програму: зчитати до 100 записів ASCII-ім’я та номер; відсортувати структури за ім’ям вручну і виконати бінарний пошук; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати коефіцієнти від вільного члена до степеня N до 20; побудувати вектор коефіцієнтів похідної; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати до 1000 сум із додатним надходженням і від’ємною витратою; вивести найбільшу витрату та проміжні баланси; вивести результат і повідомити помилки введення.
- Створити консольну програму: зчитати до 100 часів відправлення автобусів hh:mm та поточний час; перевести часи у хвилини, відсортувати й бінарним пошуком знайти найближчий рейс; вивести результат і повідомити помилки введення.
Тема 5. Вказівники та пам’ять
- Створити консольну програму, яка зчитує до 20 цілих чисел у масив
new[]і проходить його вказівниками в межах одного об’єкта. Вивести суму та індекс максимуму; для порожнього вводу вивести empty, завершитиdelete[]. - Створити консольну програму, яка зчитує два цілі числа й обмінює їх через функцію з вказівниками, що відхиляє nullptr до розіменування. Вивести результат і окремо перевірити відмову для нульового вказівника.
- Створити консольну програму, яка зчитує матрицю до 10×10 у суцільний
unique_ptr-масив і виводить суми рядків. Перевірити координати й пояснити відповідністьnew[]таdelete[]. - Створити консольну програму, яка зчитує числа до EOF, будує однозв’язний список
unique_ptr, видаляє всі від’ємні вузли та виводить решту. Перевірити порожній список і видалення всіх вузлів. - Створити консольну програму, у якій два
shared_ptrспільно володіють навчальним ресурсом, аweak_ptrспостерігає за ним. Послідовно скинути власників і вивести результати lock/expired до і після останнього скидання. - Створити консольну програму із заданим у коді деревом: діти через
shared_ptr, батько черезweak_ptr. Надрукувати шлях від листка до кореня, очистити власників і через лічильник деструкторів довести відсутність циклу володіння. - Створити консольну програму, яка зчитує набір чисел, будує дерево пошуку на
unique_ptr, виводить впорядкований обхід та результат пошуку введеного ключа. Повтори не додавати, перевірити порожнє дерево. - Створити консольну програму, яка зчитує ASCII-рядок і створює його незалежну копію у динамічному char-масиві з нульовим термінатором. Змінити перший символ копії за непорожнього вводу, надрукувати обидва рядки й звільнити буфери.
- Створити консольну програму із заданим у коді безпечним сценарієм переносу
unique_ptrміж двома власниками. Вивести стан джерела, значення призначення та кількість знищених об’єктів; порожнє джерело не розіменовувати. - Створити консольну програму, яка зчитує місткість динамічного буфера й кількість елементів, перевіряє межі до запису й друкує результат. Запустити коректну програму з AddressSanitizer. Окремо в одноразовій копії відтворити один вихід за межі, зберегти діагноз і виправити; помилкову копію не включати в готове рішення.
Тема 6. Налагодження та помилки
- Створити консольну програму, яка зчитує два скінченні числа і знак /; функція ділення кидає
domain_errorпри нульовому дільнику. Перехопити виняток за const-посиланням, вивести результат або повідомлення й код завершення 1 для помилки. - Створити консольну програму, яка зчитує індекс і список із трьох чисел. Реалізувати власний IndexError, похідний від
runtime_error, збережений індекс включити в повідомлення; вивести вибраний елемент або діагноз. - Створити консольну програму з трьома вкладеними функціями та локальними об’єктами, деструктори яких друкують повідомлення; найглибша функція кидає виняток. Вивести точний порядок знищення й catch, пояснити розкручування стека.
- Створити консольну програму, яка зчитує рядок цілого числа й повертає expected із помилкою формату або діапазону, повністю споживаючи рядок. Через transform подвоїти лише безпечне значення, вивести результат або код помилки.
- Створити консольну програму, яка зчитує рядок missing або число температури; optional позначає відсутність, expected – помилку розбору. Вивести один із трьох станів і продемонструвати всі стани на тестах у коді.
- Створити консольну програму з навчальними рахунками A=10000 і B=5000 копійок. Зчитати кількість і список додатних сум переказів з A до B. Виконати пакет через тимчасову копію; за нестачі коштів відмовити без часткових змін. Вивести початкові та кінцеві залишки.
- Створити консольну програму з функцією пошуку максимуму і заданими в коді контрольними наборами, включно з порожнім. Порожній набір обробити звичайною перевіркою, коректні результати перевірити assert; вивести число перевірок і пояснити NDEBUG.
- Створити консольну програму, яка зчитує довжину масиву 1–10 та значення й безпечно обчислює середнє. На наборі 2, 3 відтворити лише логічну помилку цілочисельного ділення, знайти її через Watch і вивести виправлений результат.
- Створити консольну програму з функцією noexcept, яка перехоплює всі власні помилки й повертає статус. Зчитати скінченне число, вивести корінь або статус відмови для від’ємного; не демонструвати terminate запуском у звичайному потоці тестів.
- Створити консольну програму, яка зчитує рядок hh:mm; поєднати expected-перевірки формату і діапазону через
and_then, форматування через transform, журнал черезor_else. Вивести хвилини від початку доби або причину відмови та перевірити 00:00, 23:59, 24:00.
Тема 7. Класи та об’єкти
- Створити консольну програму для поняття «Студент», що реалізує ім’я й три бали 0–100; середній бал, а також додавання оцінки та відхилення балів поза межами. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Прямокутник», що реалізує координати лівого нижнього кута й додатні сторони; площу, а також переміщення і масштабування додатним коефіцієнтом. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Лічильник води», що реалізує попереднє й нове невід’ємні показання; споживання, а також монотонні показання та тариф у копійках за одиницю. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Готельний номер», що реалізує номер, місткість і ціну доби; вартість перебування, а також бронювання напіввідкритих інтервалів цілих днів без перетину. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Співробітник», що реалізує ім’я, посаду та оклад у копійках; картку, а також премію 0–100 відсотків і загальну навчальну виплату. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Вектор на площині», що реалізує скінченні x і y; довжину, а також суму, масштабування та проєкцію на ненульовий вектор методами. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Кавова машина», що реалізує запаси води й зерна; приготування порції 100 мл і 10 г, а також два рецепти, поповнення й відмову без часткового списання. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Таймер кухні», що реалізує цілу тривалість у секундах; залишок після кроку, а також стани ready/running/done і повторний запуск. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Піца», що реалізує розмір small/large і базову ціну; опис, а також добавки з цінами без повторних назв. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
- Створити консольну програму для поняття «Шахова фігура», що реалізує тип king/knight і клітинку 0–7; позицію, а також перевірку геометрично допустимого ходу без інших фігур. Початкові дані та команди зчитувати з клавіатури; виводити результат кожної операції. Зберегти інваріант після помилки; перевірити звичайний і граничний випадки.
Тема 8. Копіювання, переміщення, RAII
- Створити консольну програму для об’єкта «Динамічний масив»: реалізувати масив цілих заданої довжини, а також зміну копії без впливу на оригінал. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Відеокадр»: реалізувати кадр ширини й висоти з байтами пікселів, а також незалежне редагування копії кадру. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Бітова множина»: реалізувати масив слів для бітів 0–255, а також незалежні копії та встановлення біта. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Мережевий пакет»: реалізувати move-only буфер навчальних байтів, а також передавання між двома власниками без копії. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Банківська транзакція»: реалізувати guard для одного цілого балансу, а також commit і відкат при помилці. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Електронна таблиця»: реалізувати буфер текстових комірок прямокутного аркуша, а також копіювання аркуша й редагування комірки. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Пул з’єднань»: реалізувати RAII-токен навчального ресурсу з пулу, а також одноразове повернення токена після переміщення. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Граф суміжності»: реалізувати квадратний буфер матриці 0/1, а також незалежне клонування графа. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Малий рядок»: реалізувати рядок із фіксованим внутрішнім буфером 15 символів, а також перехід на динамічний буфер для довшого тексту. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
- Створити консольну програму для об’єкта «Музичний трек»: реалізувати буфер семплів зі сталою частотою, а також копію та обрізання діапазону в новий трек. Дані ввести з клавіатури; вивести стани оригіналу й результату. Перевірити порожній випадок, незалежність ресурсів або одноосібність володіння, відсутність подвійного завершення.
Тема 9. Перевантаження операцій
- Створити консольну програму для типу «Раціональні числа»: реалізувати скорочені чисельник і знаменник; + та <<, а також порівняння і відмову нульового знаменника. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Дата»: реалізувати коректну дату 2000–2099; == і <<, а також ++ та додавання днів із високосним роком. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Довжина»: реалізувати невід’ємні міліметри; + і <=>, а також множення на кількість та введення метрів. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Модульна арифметика»: реалізувати значення за модулем 17; + і *, а також віднімання, степінь і ==. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Множина малих чисел»: реалізувати елементи 0–31 у масці; | та &, а також різницю, симетричну різницю і належність. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Матриця»: реалізувати розміри та double-елементи; перевірений [], а також множення сумісних матриць і транспонування. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Шахова позиція»: реалізувати 64 коди клітинок; [] і ==, а також константний доступ та валідацію символів. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Вектор N-вимірний»: реалізувати координати; + і [], а також скалярний добуток сумісних розмірів і норму. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «IPv4-адреса»: реалізувати чотири октети 0–255; << і ==, а також >> без часткового присвоєння, ++ із захистом межі. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
- Створити консольну програму для типу «Швидкість і відстань»: реалізувати метри та секунди окремими типами, а також distance / time з відмовою нульового часу. Операнди зчитувати з клавіатури; вивести результати операцій і зрозумілі відмови. Перевірити межові значення й узгодженість операцій, не змінювати операнди звичайного додавання.
Тема 10. Наслідування та поліморфізм
- Створити консольну програму «Банківські рахунки»: реалізувати поточний і депозитний рахунки; virtual monthly, додати кредитний рахунок з явно заданою межею боргу. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Товари магазину»: реалізувати електроніку й продукт зі спільною ціною, додати гарантію та навчальний строк придатності в днях. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Сповіщення»: реалізувати навчальні email і SMS з віртуальним текстовим результатом, додати push та пріоритет повідомлення. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Персонал університету»: реалізувати викладача й лаборанта зі спільним навантаженням, додати адміністратора та перевірку годин. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Навчальні платники»: реалізувати два види з введеними умовними ставками, додати третій вид і спільну перевірку невід’ємної бази. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Пункти меню»: реалізувати страву й напій зі спільною вартістю, додати комплекс з фіксованою навчальною знижкою. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Ігрова зброя»: реалізувати ближню й дальню атаку з віртуальною шкодою, додати магічну атаку та витрату ресурсу. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Способи оплати»: реалізувати картку й готівку з умовною комісією, додати третій локальний макет і ліміти. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Нерухомість»: реалізувати квартиру й ділянку з умовною оцінкою, додати будинок і перевірку площі. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання. - Створити консольну програму «Електроприлади»: реалізувати лампу й нагрівач із потужністю, додати режими роботи та години використання. Ввести дані з клавіатури, зберегти різні види через
unique_ptr<Base>і вивести результати спільної операції. Перевірити коректні й помилкові аргументи, уникнути зрізання.
Тема 11. Абстрактні класи, інтерфейси
- Створити консольну програму «Платіжні шлюзи»: реалізувати інтерфейс Payment і два локальні макети, додати вибір реалізації за введеною назвою та перевірку суми. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Навчальні шифрувальники»: реалізувати інтерфейс перетворення й Caesar/XOR, додати зворотне перетворення та перевірку ключа. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Багатофункціональний пристрій»: реалізувати інтерфейси Printer і Scanner, додати окремі клієнтські функції для кожної ролі. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Джерела даних»: реалізувати інтерфейс Source і джерела масиву та введення, додати генератор послідовності з кінцевою межею. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Чисельне інтегрування»: реалізувати стратегії прямокутників і трапецій, додати перевірку меж і кількості кроків. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Політики кешу»: реалізувати інтерфейс витіснення й FIFO, додати LRU та доступ до існуючого ключа. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Маршрутизація»: реалізувати інтерфейс вибору маршруту за ціною й довжиною, додати фільтр платних доріг. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Геометричні тіла»: реалізувати інтерфейси HasVolume і HasSurface, додати куб і циліндр з перевіркою розмірів. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Студент-співробітник»: реалізувати ромб Person–Student/Employee, додати віртуальну базу з одним ідентифікатором. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
- Створити консольну програму «Генератори навчальних рядків»: реалізувати інтерфейс генерації та політики алфавіту, додати довжину, seed і перевірку вимог. Дані й команди ввести з клавіатури; вивести стан після операцій. Перевірити однаковий контракт конкретних реалізацій, порожній та помилковий випадки.
Тема 12. Шаблони та концепти
- Створити консольну програму з шаблоном maxOf для int і double; дані 3, 7 та 2.5, 1.0 задати в коді, вивести максимуми. В окремому файлі перевірити відмову maxOf(3,7.5) та пояснити явний аргумент типу.
- Створити консольну програму з
Matrix<T,R,C>і додаванням однакових розмірів. Задати дві матриці int 2×2 у коді, вивести суму; різні розміри не повинні компілюватися. - Створити консольну програму зі стеком
FixedStack<T,N>, push/pop і відмовами для порожнього й повного. У main задати int, місткість 2, числа 4 і 9; вивести вилучені значення та повідомлення відмови. - Створити консольну програму з
Interval<T>для totally_ordered, замкненими межами та contains. У коді задати [2,5] і значення 1, 2, 5, 6, надрукувати результати та перевірити відмову для перевернутих меж. - Створити консольну програму з Numeric mean, дані int {2,4,9} і double {1.5,2.5} задати в коді. Вивести середні як double і повідомлення для порожніх даних; bool явно виключити концептом.
- Створити консольну програму з
StrongId<Tag>, UserTag і BookTag; значення 1, 1, 2 задати в коді, вивести рівність двох UserId. Змішування тегів перевірити окремим негативним тестом. - Створити консольну програму з
Serializer<T>і повною спеціалізацією bool; для заданих у коді 25 і false вивести числовий текст та no. Пояснити, чому це спеціалізація класу. - Створити консольну програму з variadic друком через fold і роздільником |. У main викликати для 1, 2.5, рядка x та порожнього пакета; показати кількість аргументів і результат без зайвого роздільника.
- Створити консольну програму з
Pair<T>і deduction guide. Задати пари (1,2) та (1,3) без явного T, надрукувати лексикографічне порівняння; різні типи компонентів відхилити. - Створити консольну програму з концептом Shape, що вимагає const area() з перетворенням до double. У коді задати прямокутник 2×3 і квадрат зі стороною 4, вивести суму площ та окремо перевірити відмову для int.
Тема 13. Контейнери
- Створити консольну програму. Для vector рядків вилучити порожні через std::erase_if й надрукувати кількість видалених; перевірити всі порожні. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. Зберегти останні 4 повідомлення у deque, додати 6 і надрукувати залишок у порядку часу. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. У list чисел перемістити перші два елементи до іншого списку через splice; пояснити гарантії ітераторів. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. У map товарів виконати try_emplace повторного ключа й insert_or_assign; надрукувати різницю поведінки. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. У multimap курсів знайти всі курси викладача через equal_range; перевірити відсутнього. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. Створити set записів бал,ім’я з компаратором бал за спаданням, ім’я за зростанням; перевірити нічию. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. У unordered_map порахувати ASCII-слова, звіт вивести у відсортованому vector пар. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. Створити unordered_set координат з узгодженими == і хешем; показати дубль і відсутній ключ. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. За допомогою stack перевірити рядки круглих дужок, включаючи порожній і початкову закривальну. Початкові дані задати в коді; вивести результат.
- Створити консольну програму. У priority_queue виконати завдання за більшим пріоритетом, за нічиєї за ранішим ID; перевірити порядок чотирьох завдань. Початкові дані задати в коді; вивести результат.
Тема 14. Ітератори, алгоритми, ranges
- Створити консольну програму: для vector {5,-2,0,-1,8} виконати erase_if від’ємних, надрукувати залишок і кількість вилучених; пояснити недійсність старих ітераторів.
- Створити консольну програму: для заданих у коді трьох студентів відсортувати записи ranges::sort за полем grade, надрукувати порядок; для нічиєї явно задати ім’я.
- Створити консольну програму: з iota(1,20) відібрати парні, обчислити квадрати й взяти перші три; надрукувати 4, 16, 36 без проміжного вектора.
- Створити консольну програму: mutable-лямбда повертає наступне число від 7; скопіювати після двох викликів та надрукувати результати обох копій, пояснити незалежність.
- Створити консольну програму: матеріалізувати поля рядка a,b,,c через split/transform/to у
vector<string>; вивести порожнє поле й показати незалежність після очищення джерела. - Створити консольну програму: для чисел 1, 2, 3, 4 порахувати accumulate суму і partial_sum префікси; вивести обидва результати.
- Створити консольну програму: показати п’ять назв на сторінках по два через chunk/enumerate, вивести номер і вміст короткої останньої сторінки.
- Створити консольну програму: поєднати задані в коді масиви цін і кількостей через zip, перед цим перевірити однакову довжину; вивести суму.
- Створити консольну програму: у відсортованому vector {1,3,3,7} знайти lower_bound для 3 і 5, надрукувати позиції та перевірити end для 9.
- Створити консольну програму з власним input-діапазоном квадратів чисел 1..5. Додати static_assert input_range, надрукувати перші три через take і пояснити час життя ітератора.
Тема 15. Потоки та файли
- Створити консольну програму, яка генерує numbers.txt з 3, 5, 7, читає числа до успішного завершення операцій і виводить суму 15. Перевірити відкриття й відрізнити неправильний token від EOF.
- Створити консольну програму: згенерувати CSV name,score з правильним і помилковим рядками, через istringstream прийняти score 0..100, записати звіт і кількість відмов.
- Створити консольну програму, яка генерує п’ять байтів, читає блоками по 4 та друкує hex. Обробити короткий останній блок через gcount.
- Створити консольну програму: записати три uint32 значення в явному little-endian форматі, змінити друге через seekp та перечитати, вивести результат.
- Створити консольну програму: для заданого в коді Windows path показати filename, stem, extension, parent_path; не вимагати існування файла.
- Створити консольну програму, що генерує власний каталог із .txt і .cpp, обходить його та виводить кількість і загальні байти .txt; перевірити error_code після операцій.
- Створити консольну програму: згенерувати key=value конфігурацію, розібрати додатний width, відхилити width=abc і вивести причину та номер рядка.
- Створити консольну програму, яка формує новий звіт через .tmp і rename в приватній навчальній теці; при наявному результаті відмовити, перевірити close й rename.
- Створити консольну програму: згенерувати джерело, скопіювати до власної папки резервування, перевірити розміри та побайтову рівність, вивести успіх або причину помилки.
- Створити консольну програму, що генерує правильний і обрізаний двійкові файли фіксованих 8-байтових записів; відхилити неповний запис, надрукувати кількість повних і статус.
Тема 16. Модулі та C++26
- Створити консольну програму. Зчитувати команди deposit і withdraw із сумою в копійках до end. Експортувати клас Account із модуля bank, відхиляти зняття понад залишок, друкувати баланс після кожної команди.
- Створити консольну програму. Зчитати з клавіатури набір чисел до кінця введення. Статична бібліотека stats має повертати кількість, мінімум, максимум і середнє; консольний клієнт друкує звіт або повідомляє про порожній набір.
- Створити консольну програму. Зчитати дві матриці 2×2, експортувати тип Matrix і операції додавання та множення з модуля matrix; друкувати обидва результати. Перевірити одиничну й нульову матриці.
- Створити консольну програму. Створити модуль calendar із типом Date. З клавіатури зчитати день, місяць і рік 1900–2100; перевірити коректність дати та вивести наступну дату, у тому числі перехід року.
- Створити консольну програму. Створити модуль schedule, який приймає з клавіатури два заняття з днем, аудиторією та інтервалом хвилин. Вивести наявність конфлікту; дотик кінця до початку конфліктом не вважати.
- Створити консольну програму. Створити модуль cli для параметрів --count N і --verbose, де N від 1 до 100. Консольний клієнт друкує розібрані значення; перевірити пропущене число, дубль параметра та зайвий аргумент.
- Створити консольну програму. Створити модуль polynomial із шаблонною функцією схеми Горнера для арифметичних типів. Коефіцієнти задати в коді для int і double, x зчитати з клавіатури; друкувати два результати.
- Створити консольну програму. Створити модуль units з окремими типами Meter та Kilometer і явними перетвореннями. З клавіатури зчитати значення та позначення m або km; друкувати результат у двох одиницях.
- Створити консольну програму. Створити статичну бібліотеку cart для позицій із кодом, кількістю й ціною. Дані зчитати з клавіатури до end; при сумі не менше 100000 копійок знижка 5 %, округлена вниз до копійки. Надрукувати суму, знижку й оплату.
- Створити консольну програму. Створити модулі budget.model та budget.report. З клавіатури читати записи категорія сума_копійок до end, де додатна сума є доходом, від’ємна – витратою; друкувати підсумки категорій і загальний баланс.