Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Конкретні тестові дані, якщо вони не задані, оберіть і наведіть у звіті. Навчальні приклади не призначені для роботи з реальними обліковими даними або сторонніми файлами.
Варіанти
Варіант 1. Аналізатор журналу сервера
1. Початковий рівень. Створити консольну програму: згенерувати log.txt з рядками hour level message; порахувати ERROR. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати журнал hour|level|message, перевірити hour 0..23 та рівні INFO/WARN/ERROR, вивести відхилені номери рядків. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати журнал hour|level|message, сформувати погодинний звіт ERROR у report.txt і перевірити запис після close. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 2. Пошук дублікатів файлів
1. Початковий рівень. Створити консольну програму: згенерувати три файли, два однакові; згрупувати кандидатів за розміром. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: у власній навчальній папці згрупувати файли за розміром і навчальною контрольною сумою, потім підтвердити побайтову рівність. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати вкладений набір із дублями, порожніми й різними файлами однакової довжини; записати групи підтверджених дублікатів, нічого не видаляти. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 3. Перейменування фотографій
1. Початковий рівень. Створити консольну програму: згенерувати порожні навчальні файли img1.jpg, img2.jpg; надрукувати план перейменування у photo-001.jpg тощо без виконання. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати файли з різними last_write_time і сформувати впорядкований план назв за датою, колізії нумерувати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати навчальні файли фотографій img1.jpg, img2.jpg тощо з різними last_write_time і реалізувати окремі режими plan/apply перейменування у photo-001.jpg тощо за датою лише для цієї фікстури; перед apply перевірити всі цільові імена і відмовити без змін при колізії. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 4. Облік витрат
1. Початковий рівень. Створити консольну програму: згенерувати CSV date,category,cents без лапок, прочитати і підсумувати cents. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: для власного CSV YYYY-MM-DD,category,cents перевірити поля та додати один коректний запис у режимі app. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати CSV витрат, згрупувати за YYYY-MM і категорією, записати звіт, помилкові рядки з номерами зберегти окремо. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 5. Контакти
1. Початковий рівень. Створити консольну програму: згенерувати contacts.csv name,phone, прочитати та знайти задане в коді ім’я. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати CSV контактів без ком у полях, видалити точні повтори пар і експортувати впорядковано. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати контакти з повторами телефонів; нормалізувати лише ASCII-цифри телефонів, зберегти всі імена групи та окремий звіт конфліктів. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 6. Двійкова база товарів
1. Початковий рівень. Створити консольну програму: згенерувати два записи id uint32 і price uint32 у явно описаному little-endian форматі, прочитати й показати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати двійкову базу товарів із фіксованих записів по 8 байтів (id uint32, price uint32, little-endian), змінити ціну другого через seekp, перечитати для перевірки. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати двійкову базу товарів із заголовком (magic, версія, кількість) і фіксованих записів id uint32, price uint32 у little-endian; читати й змінювати записи, перевіряючи довжину і номер запису, не використовувати сирі string або адреси у файлі. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 7. Злиття відсортованих файлів
1. Початковий рівень. Створити консольну програму: згенерувати два текстові файли впорядкованих цілих і злити у третій, зберігаючи повтори. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати два текстові файли впорядкованих цілих і злити їх у третій потоково без завантаження всіх чисел, відхилити невпорядкований вхід. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати три впорядковані файли, виконати k-way злиття через пріоритетну чергу, перевірити порожній файл і некоректне число. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 8. Розбиття великого файлу
1. Початковий рівень. Створити консольну програму: згенерувати 10 байтів і розбити на частини по 4, перевірити останні 2 байти. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: розбити згенерований файл на частини додатного розміру, записати маніфест з іменами та довжинами. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: розбити згенерований файл на частини заданого розміру з маніфестом імен і довжин, потім відновити файл за маніфестом, відхилити відсутню чи неправильну частину, порівняти байти результату з оригіналом. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 9. Заголовок BMP
1. Початковий рівень. Створити консольну програму: створити мінімальний навчальний BMP із 14-байтовим заголовком і DIB 40, прочитати magic та зміщення. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: для згенерованого нестисненого 24-bit BMP прочитати ширину, висоту й bits-per-pixel явними little-endian функціями. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати коректний і обрізаний BMP, перевірити magic, DIB size, planes=1, compression=0, межі піксельних даних; записати звіт помилок, непідтримувані формати відхиляти. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 10. Заголовок WAV
1. Початковий рівень. Створити консольну програму: згенерувати PCM WAV mono 16-bit 8000 Hz із заданими 8000 відліками, прочитати RIFF/WAVE. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: у згенерованому PCM WAV знайти fmt і data chunks, обчислити тривалість dataSize/byteRate. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: розібрати власні WAV із додатковим непарним chunk та обрізаним data; врахувати padding chunk, відхиляти вихід за межі й непідтриманий формат. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 11. Щоденник
1. Початковий рівень. Створити консольну програму: створити власний файл demo/2026/09/17.txt із навчальним записом і прочитати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати три записи в каталогах рік/місяць і знайти ASCII-слово у вмісті, вивести шлях і рядок. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати щоденник за кілька місяців у файлах рік/місяць/день.txt, створити індекс дат та звіт збігів заданого ASCII-слова за період; дати перевірити, сторонні каталоги не змінювати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 12. Команда tree
1. Початковий рівень. Створити консольну програму: згенерувати папку з двома файлами й підкаталогом, надрукувати структуру одного рівня. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати навчальне дерево каталогів і файлів та рекурсивно показати його з відступами й лімітом глибини, порядок упорядкувати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати навчальне дерево каталогів і файлів, вивести його з логічними розмірами файлів і підсумками каталогів, не слідувати symlink, кожну помилку позначити як неповний підсумок. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 13. Статистика розширень
1. Початковий рівень. Створити консольну програму: згенерувати файли .cpp, .txt і без розширення, порахувати кількість за extension. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: для власного вкладеного каталогу згрупувати кількість та байти за розширенням, порожнє розширення позначити явно. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати фікстуру й записати CSV extension,count,total,max; розширення ASCII нормалізувати до нижнього регістру, помилки file_size не перетворювати на нулі. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 14. Конвертер CSV у Markdown
1. Початковий рівень. Створити консольну програму: згенерувати простий CSV name,score, вивести Markdown-таблицю у файл. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: перетворити власний CSV з фіксованою кількістю полів у Markdown, екранувати | в комірці, неправильні рядки відхиляти. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати CSV id,name,score, вибрати задані назви колонок, відхилити відсутню колонку й порушені рядки, записати готову таблицю через тимчасовий файл. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 15. Записи фіксованої ширини
1. Початковий рівень. Створити консольну програму: згенерувати текстові записи ASCII з ID шириною 4 і name шириною 10; розібрати за зміщеннями. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: для власних записів шириною 4+10+3 перевірити ціле score 0..100 і точну довжину, створити CSV. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати коректні й короткі записи фіксованої ширини, перетворити правильні в CSV, неправильні записати з номерами й причинами, пробіли обрізати лише на краях поля. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 16. Книга рецептів
1. Початковий рівень. Створити консольну програму: згенерувати текст із блоками title= та ingredient=, прочитати один рецепт. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати кілька рецептів з порожнім рядком між блоками, знайти за ASCII-підрядком назви. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: описати власний формат із title та ingredient=name;grams, перевірити додатні грами, знайти рецепти без заданого інгредієнта й записати звіт. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 17. Вікторина з файлу
1. Початковий рівень. Створити консольну програму: згенерувати файл question|answer з двома навчальними питаннями, прочитати й показати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати вікторину question|answer і задані відповіді користувача в іншому файлі, порахувати точні ASCII-збіги. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати файли питань з ID і відповідей, перевірити унікальні ID та відсутні відповіді, записати детальний результат і підсумковий бал. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 18. Навчальні XOR-нотатки
1. Початковий рівень. Створити консольну програму: згенерувати ASCII-текст і виконати побайтовий XOR із заданим байтом, зберегти та відновити для порівняння. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: зашифрувати згенерований ASCII-текст побайтовим XOR із заданим байтом і записати файл із заголовком magic, версія й довжина; перевірити заголовок перед відновленням тексту. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати правильний та обрізаний файли з текстом, зашифрованим XOR із повторним ключем, заголовком довжини й контрольною сумою відкритого тексту; перевірити їх при відновленні; прямо зазначити, що XOR із повторним ключем не є безпечним шифруванням. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 19. Перевірка навчального архіву
1. Початковий рівень. Створити консольну програму: створити папку-фікстуру, перевірити наявність README.md, main.cpp і report.txt, вивести відсутні. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: перевірити власну папку здавання на обов’язкові непорожні файли та небажані .exe/.obj, нічого не видаляти. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати дерево здавання, прочитати маніфест дозволених відносних шляхів, відхилити абсолютні й .., записати звіт відсутніх і зайвих файлів без розпакування чужого архіву. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 20. Шістнадцятковий редактор
1. Початковий рівень. Створити консольну програму: згенерувати 16 байтів і надрукувати hex-дамп зі зміщеннями. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: змінити один байт власного файла за заданим зміщенням, перевірити межі й значення 0..255. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати двійковий файл, побудувати план трьох змін байтів (зміщення й значення 0..255), перевірити всі зміщення до запису, зберегти нову копію й показати hex-дампом тільки відмінні позиції. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 21. Погодні дані
1. Початковий рівень. Створити консольну програму: згенерувати CSV station,month,temp і обчислити середню температуру. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати дані кількох станцій і місяців, перевірити month 1..12, згрупувати середні. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати CSV з пропущеними та неправильними температурами, окремо звітувати прийняті/відхилені записи й кількість спостережень для кожного середнього. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 22. Індекс слів у каталозі
1. Початковий рівень. Створити консольну програму: згенерувати два текстові файли й знайти задане ASCII-слово з номерами рядків. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати кілька текстових файлів і побудувати індекс ASCII-слово→файл→множина рядків. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати вкладені тексти, побудувати індекс і пошук усіх слів запиту в одному рядку, результат впорядкувати, двійкові файли не інтерпретувати як текст. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 23. Очищення тимчасових файлів
1. Початковий рівень. Створити консольну програму: згенерувати власні .tmp файли з різними last_write_time, показати кандидатів, старших за задану тривалість, без видалення. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати фікстуру й записати пробний план очищення лише .tmp у її корені; явно порівнювати file_time_type часи. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати .tmp та інші файли з різними last_write_time і реалізувати dry-run та явний apply видалення лише .tmp, старших за задану тривалість; перед видаленням повторно перевірити тип і вік; symlink не видаляти, звітувати кожну відмову. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 24. Шкільний журнал
1. Початковий рівень. Створити консольну програму: згенерувати двійкові записи id uint32,score uint32 з явним little-endian, прочитати й вивести. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати двійковий журнал із заголовком і фіксованими записами id uint32, score uint32 у little-endian, оновити оцінку за індексом з перевіркою 0..100. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати двійковий журнал записів id uint32, score uint32 у little-endian, прочитати його, перевірити ID й оцінки 0..100, відсортувати копію за score та записати новий файл, оригінал не змінювати. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 25. Синхронізація каталогів
1. Початковий рівень. Створити консольну програму: згенерувати дві власні папки й надрукувати імена, що є лише в джерелі. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: побудувати план копіювання нових і відмінних за байтами файлів двох власних папок, без виконання. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати дві навчальні папки, побудувати план копіювання нових і відмінних за байтами файлів із джерела в призначення та виконати його лише в режимі apply; не видаляти файли призначення, заборонити вкладення папок одна в одну й звітувати помилки. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 26. Лічильник коду
1. Початковий рівень. Створити консольну програму: згенерувати .cpp із порожніми та непорожніми рядками, порахувати обидві групи. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати .cpp і порахувати рядки, що після пробілів починаються з //; решту непорожніх вважати кодом. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати контрольний .cpp й реалізувати навчальний автомат блокових коментарів та рядкових літералів; описати непідтримані raw-літерали, не називати результат повним C++-парсером. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 27. Таблиця рекордів гри
1. Початковий рівень. Створити консольну програму: згенерувати файл id,score у явному двійковому форматі, прочитати й вивести top-3. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати 15 записів рекордів id,score, відсортувати score за спаданням, а id за зростанням, зберегти top-10 у явному двійковому форматі з заголовком. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: зберегти таблицю рекордів id,score у двійковому файлі із заголовком, версією й простою контрольною сумою байтів, згенерувати пошкоджену копію та відхилити її; сума виявляє випадкові зміни, не забезпечує автентичність. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 28. Порівняння текстових файлів
1. Початковий рівень. Створити консольну програму: згенерувати два тексти й вивести номери рядків, що відрізняються на однакових позиціях. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: порівняти власні тексти з різними довжинами, показати відсутні рядки й зберегти звіт. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: реалізувати рядковий diff через найдовшу спільну підпослідовність для двох невеликих згенерованих файлів; показати вставки/вилучення й обмежити розмір для квадратичної пам’яті. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 29. Конфігурація проєкту
1. Початковий рівень. Створити консольну програму: згенерувати key=value з width і height, прочитати й вивести. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати конфіг із width, height, fullscreen, перевірити додатні розміри й true/false, невідомі ключі відхилити. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати конфіг key=value з ключами width, height і fullscreen, для відсутніх ключів підставити значення за замовчуванням, а неправильні явні значення вважати помилкою; записати нормалізовану конфігурацію та звіт перевірок. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Варіант 30. Архів квитанцій
1. Початковий рівень. Створити консольну програму: згенерувати навчальні CSV-квитанції YYYY-MM-DD,cents у папці року, прочитати суми. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
2. Базовий рівень. Створити консольну програму: згенерувати квитанції двох років і знайти записи за замкненим періодом ISO-дат та мінімальною сумою. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
3. Високий рівень. Створити консольну програму: згенерувати архів CSV-квитанцій id,YYYY-MM-DD,cents у папках років, побудувати індекс, перевірити унікальні ID квитанцій, записати річні підсумки й окремо дублікати; не змінювати оригінали. Параметри задати в коді; працювати в окремій навчальній папці, вивести результат і повідомлення файлових помилок.
Порядок виконання роботи
- Зберіть приклади, порівняйте результати з наведеними.
- Створіть окрему програму для обраного рівня свого варіанта.
- Запишіть вимоги, допустимі дані й очікувані результати до реалізації.
- Перевірте звичайний, порожній і граничний випадки, які мають сенс для задачі.
- Збережіть код, команди збирання й результати перевірок у локальному Git.
Працюйте в окремій навчальній теці. Програми самі створюють свої дані; перед повторним запуском перевірте назви. Для завдань перейменування, очищення й синхронізації спочатку формуйте пробний план, не працюйте з особистими каталогами.
Вимоги до звіту
Подайте умову обраного завдання, рішення з поясненням інваріантів, команду збирання, версію MSVC, контрольні дані та справжнє виведення. Для очікуваних помилок відокремте негативний тест від робочої програми. Поясніть причину відмови й виправлення; самого знімка Error List недостатньо.