Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Щоденник настрою
1. Початковий рівень. Написати консольну програму, що зберігає введені користувачем записи щоденника настрою (дата, оцінка 1–5, коментар) у JSON-файл, читає файл і виводить усі записи.
2. Базовий рівень. Створити консольну програму щоденника настрою (запис: дата, оцінка 1–5, коментар) з JSON-файлом, яка в меню виконує команди додавання запису, пошуку за періодом і словом у коментарі та виводить середню оцінку за тижнями, а відсутній чи пошкоджений файл обробляє з повідомленням.
3. Високий рівень. Створити бібліотеку щоденника настрою (записи: дата, оцінка 1–5, коментар) у JSON-файлі з автоматичною резервною копією перед кожним збереженням (5 останніх копій із датою в імені) і відновленням з вибраної копії. Застосунок dotnet CLI виконує команди додавання, перегляду й відновлення з аргументів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 2. Розклад занять з CSV
1. Початковий рівень. Написати консольну програму, що читає CSV-файл розкладу (день, пара, дисципліна, викладач, аудиторія) у список записів Lesson і виводить заняття введеного дня, упорядковані за номером пари.
2. Базовий рівень. Створити консольну програму, що читає CSV-файл розкладу (день, пара, дисципліна, викладач, аудиторія) з підтримкою полів у лапках, які містять кому, пропускає помилкові рядки з повідомленням про номер рядка, групує заняття за викладачами й записує звіт у текстовий файл.
3. Високий рівень. Створити бібліотеку імпорту CSV-розкладу (день, пара, дисципліна, викладач, аудиторія) з автоматичним визначенням роздільника (, або ;) і кодування (UTF-8 або Windows-1251) та експортом занять у JSON. Застосунок dotnet CLI перетворює вхідний файл на вихідний, шляхи задано аргументами; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 3. Субтитри SRT
1. Початковий рівень. Написати консольну програму, що читає файл субтитрів SRT (блоки: номер, рядок часу 00:01:02,500 --> 00:01:04,000, текст) у список записів і виводить кількість субтитрів та тривалість фільму за кінцем останнього субтитру.
2. Базовий рівень. Створити консольну програму, що читає файл субтитрів SRT (номер, час початку й кінця, текст), зсуває всі часові позначки на введену кількість мілісекунд (TimeSpan) і записує результат у новий файл, не змінюючи вихідного. Некоректні блоки пропускати з повідомленням.
3. Високий рівень. Створити бібліотеку субтитрів SRT (номер, початок, кінець, текст) із синхронізацією за двома опорними точками (лінійне перетворення часу), об’єднанням двох файлів з перенумерацією та перевіркою накладань субтитрів. Застосунок dotnet CLI обробляє файли з аргументів і записує результат у новий файл; помилки – у Console.Error.
Варіант 4. Словник перекладів інтерфейсу
1. Початковий рівень. Написати консольну програму, що завантажує з JSON-файлу словник Dictionary<string, string> рядків інтерфейсу українською (ключ – переклад) і для введеного ключа виводить переклад або сам ключ, якщо перекладу немає.
2. Базовий рівень. Створити консольну програму локалізації, що завантажує мовні JSON-файли (uk.json, en.json) як словники «ключ – рядок», виводить рядки вибраною мовою з мовою за замовчуванням для відсутніх ключів і звіт про ключі, яких бракує в кожному файлі.
3. Високий рівень. Створити бібліотеку локалізації, що читає мовні JSON-файли з вкладеними ключами (menu.file.open) через JsonNode, підставляє параметри ({name}) у рядки й перевіряє однаковий набір параметрів кожного ключа в усіх мовах. Застосунок dotnet CLI перевіряє каталог мовних файлів з аргументу й виводить розбіжності; помилки – у Console.Error.
Варіант 5. Контакти
1. Початковий рівень. Написати консольну програму, що зберігає список контактів (ім’я, телефон, email), введених користувачем, у JSON-файл, читає його й виводить контакти.
2. Базовий рівень. Створити консольну програму контактів (ім’я, телефон, email) з JSON-сховищем, що експортує контакти в CSV з екрануванням лапок, імпортує CSV і зливає імпортовані контакти з наявними без дублікатів за номером телефону.
3. Високий рівень. Створити бібліотеку контактів (ім’я, телефони, email) з імпортом формату vCard (.vcf), експортом у JSON і CSV, злиттям за номером телефону та звітом конфліктів злиття (різні дані одного контакту). Застосунок dotnet CLI конвертує файли з аргументів між форматами; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 6. Трекер читання книг
1. Початковий рівень. Написати консольну програму, що зберігає прочитані книги (назва, автор, сторінки, дата завершення) у JSON-файл, читає його й виводить кількість прочитаних сторінок за введений рік.
2. Базовий рівень. Створити консольну програму трекера читання (книга: назва, автор, сторінки, дата завершення) з JSON-файлом, що виводить статистику книг і сторінок за місяцями, улюблених авторів і зберігає місячний звіт у текстовий файл з назвою на зразок report-2026-09.txt.
3. Високий рівень. Створити бібліотеку читацького трекера (книги з назвою, автором, сторінками й датою завершення в JSON) з цілями на рік (книги або сторінки), прогнозом виконання цілі за поточним темпом та експортом звіту в HTML. Застосунок dotnet CLI виконує команди з аргументів; помилки – у Console.Error.
Варіант 7. Фотоархів
1. Початковий рівень. Написати консольну програму, що для введеного каталогу виводить усі файли .jpg і .png з підкаталогами (Directory.EnumerateFiles), їхню кількість і сумарний розмір.
2. Базовий рівень. Створити консольну програму, що знаходить фотографії (.jpg, .png) у заданому каталозі з підкаталогами, групує їх за роком і місяцем зміни файлу (FileInfo) і виводить групи файлів з однаковим розміром як кандидати в дублікати.
3. Високий рівень. Створити бібліотеку фотоархіву, що знаходить фотографії (.jpg, .png) каталогу з підкаталогами, виявляє дублікати за хешем SHA-256 вмісту (SHA256.HashData з потоку), складає план впорядкування у каталоги рік/місяць за датою зміни й записує план у JSON. Застосунок dotnet CLI виконує план лише з опцією --apply; помилки – у Console.Error.
Варіант 8. Заголовок BMP
1. Початковий рівень. Написати консольну програму, що читає з BMP-файлу, шлях до якого введено, за допомогою BinaryReader сигнатуру, розмір файлу, ширину й висоту зображення із заголовка та виводить їх.
2. Базовий рівень. Створити консольну програму, що читає заголовок BMP-файлу через BinaryReader, перевіряє сигнатуру «BM» і виводить розмір файлу, ширину, висоту, глибину кольору та стиснення, а для файлу, коротшого за заголовок, чи файлу іншого формату виводить зрозуміле повідомлення.
3. Високий рівень. Створити бібліотеку, що записує 24-бітне BMP-зображення з двовимірного масиву кольорів (BinaryWriter, вирівнювання рядків до 4 байтів) і читає його назад. Застосунок dotnet CLI генерує градієнт заданого розміру; помилки – у Console.Error.
Варіант 9. Кулінарна книга
1. Початковий рівень. Написати консольну програму, що зберігає рецепти (назва, інгредієнти з кількістю й одиницею виміру) у JSON-файл, читає його й виводить рецепти, що містять інгредієнт, введений користувачем.
2. Базовий рівень. Створити консольну програму кулінарної книги (рецепт: назва, порції, інгредієнти з кількістю) з JSON-файлом, що знаходить рецепти, які можна приготувати з введених наявних продуктів, масштабує рецепт на задану кількість порцій і зберігає список покупок у текстовий файл.
3. Високий рівень. Створити бібліотеку кулінарної книги (рецепт: назва, категорія, інгредієнти з кількістю й одиницею виміру) з категоріями як переліченнями (JsonStringEnumConverter), імпортом рецептів з усіх JSON-файлів каталогу й перевіркою одиниць виміру за допустимим списком. Застосунок dotnet CLI виконує пошук з опціями (категорія, інгредієнт); помилки – у Console.Error.
Варіант 10. Порівняння файлів
1. Початковий рівень. Написати консольну програму, що порядково порівнює два текстові файли, шляхи до яких введено, і виводить номери відмінних рядків.
2. Базовий рівень. Створити консольну програму, що порядково порівнює два текстові файли й виводить відмінності з номерами рядків у форматі «− рядок першого файлу / + рядок другого», за опцією ігнорує пробіли в кінці рядків і записує звіт у файл.
3. Високий рівень. Створити бібліотеку порівняння текстових файлів на основі найдовшої спільної підпослідовності рядків, що виводить вставлені (+) і вилучені (-) рядки, а великі файли читає через StreamReader. Застосунок dotnet CLI порівнює файли з аргументів; коди завершення: 0 – однакові, 1 – різні, 2 – помилка.
Варіант 11. Шифрування файлів
1. Початковий рівень. Написати консольну програму, що шифрує текстовий файл операцією XOR з однобайтовим ключем, введеним користувачем, записує результат у новий файл і розшифровує його назад.
2. Базовий рівень. Створити консольну програму XOR-шифрування файлів ключем-рядком, що обробляє файл через FileStream блоками по 4096 байтів, записує результат у новий файл і перевіряє збіг розшифрованого файлу з вихідним.
3. Високий рівень. Створити бібліотеку XOR-шифрування файлів ключем-рядком (потокова обробка через FileStream), яка додає до зашифрованого файлу заголовок з версією формату й контрольною сумою SHA-256 вихідних даних та перевіряє цілісність під час розшифрування. Застосунок dotnet CLI виконує encrypt і decrypt; помилки – у Console.Error.
Варіант 12. Інвентар кабінету
1. Початковий рівень. Написати консольну програму, що зберігає перелік обладнання кабінету (інвентарний номер, назва, стан) у JSON-файл, читає його й виводить таблицею.
2. Базовий рівень. Створити консольну програму інвентарю (обладнання: інвентарний номер, назва, стан, кабінет) з JSON-файлом, що переміщує обладнання між кабінетами, дописує кожне переміщення в текстовий журнал і виводить звіт про обладнання кожного кабінету.
3. Високий рівень. Створити бібліотеку інвентаризації обладнання (інвентарний номер, назва, кабінет), що відновлює поточний стан з журналу подій надходження, переміщення й списання (JSON Lines: один JSON-об’єкт у рядку) і порівнює його з фактичним переліком з CSV. Застосунок dotnet CLI виводить розбіжності; помилки – у Console.Error.
Варіант 13. Частотний словник тексту
1. Початковий рівень. Написати консольну програму, що читає текстовий файл, підраховує входження кожного слова в Dictionary<string, int> і записує в CSV-файл кожне слово з кількістю входжень.
2. Базовий рівень. Створити консольну програму частотного словника, що читає великий текстовий файл порядково (File.ReadLines) у кодуванні UTF-8 або Windows-1251, ігнорує регістр і розділові знаки, сортує слова за спаданням частоти й записує результат у CSV.
3. Високий рівень. Створити бібліотеку частотного аналізу, що обробляє всі текстові файли каталогу (без урахування регістру й розділових знаків) і записує в JSON загальний частотний словник та словник кожного файлу. Застосунок dotnet CLI приймає каталог і мінімальну частоту в аргументах; помилки – у Console.Error.
Варіант 14. Резервне копіювання
1. Початковий рівень. Написати консольну програму, що копіює всі файли введеного каталогу в каталог резервної копії зі збереженням структури підкаталогів і виводить кількість скопійованих файлів.
2. Базовий рівень. Створити консольну програму резервного копіювання каталогу зі збереженням структури підкаталогів, що копіює лише нові й змінені файли (за датою зміни та розміром) і записує в журнал кожну операцію з часом і розміром.
3. Високий рівень. Створити бібліотеку інкрементного резервного копіювання каталогу з маніфестом JSON (шлях, розмір, хеш), видаленням з копії файлів, яких немає в джерелі, за опцією та режимом перевірки копії за маніфестом. Застосунок dotnet CLI виконує копіювання з аргументів; помилки – у Console.Error.
Варіант 15. Бронювання переговорних
1. Початковий рівень. Написати консольну програму, що зберігає бронювання переговорних кімнат (кімната, початок, кінець, організатор) у JSON-файл, читає його й виводить бронювання на введену дату.
2. Базовий рівень. Створити консольну програму бронювання переговорних (кімната, початок, кінець, організатор) з JSON-файлом, що відхиляє бронювання з конфліктом часу, зберігає файл після кожної зміни через тимчасовий файл і виводить вільні проміжки кімнати на дату.
3. Високий рівень. Створити бібліотеку бронювань переговорних (кімната, початок, кінець, організатор) у JSON з повторюваними подіями (щодня або щотижня до заданої дати) та експортом у текстовий формат iCalendar (.ics). Застосунок dotnet CLI виконує команди з аргументів; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 16. Метеоархів
1. Початковий рівень. Написати консольну програму, що читає CSV-файл щоденних вимірювань за рік (дата, температура, опади) і виводить середню річну температуру.
2. Базовий рівень. Створити консольну програму, що читає CSV-файли щоденних вимірювань (дата, температура, опади), окремий файл на рік, обчислює середню температуру кожного місяця кожного року й записує результат у JSON.
3. Високий рівень. Створити бібліотеку метеоархіву з CSV-файлів щоденних вимірювань (дата, температура, опади), що перевіряє пропуски й дублікати дат, заповнює пропуски лінійною інтерполяцією та експортує кліматичну норму (середні за місяцями за всі роки) у JSON. Застосунок dotnet CLI обробляє каталог файлів; помилки – у Console.Error.
Варіант 17. Вікторина
1. Початковий рівень. Написати консольну програму вікторини, що завантажує з JSON-файлу питання (текст, варіанти відповідей, номер правильної), ставить їх користувачеві й виводить кількість балів.
2. Базовий рівень. Створити консольну програму вікторини з питаннями з JSON-файлу, що після гри зберігає результат гравця (ім’я, бали, дата) в окремий JSON-файл результатів і виводить таблицю десяти найкращих результатів.
3. Високий рівень. Створити бібліотеку вікторин з кількома JSON-файлами тем (питання: текст, варіанти, правильна відповідь), перемішуванням питань з фіксованим зерном і перевіркою структури файлу ([JsonRequired]). Застосунок dotnet CLI перевіряє всі файли каталогу й виводить помилки кожного; помилки – у Console.Error.
Варіант 18. Медіатека
1. Початковий рівень. Написати консольну програму, що зберігає список книг (назва, автор, рік) у JSON-файл, читає його й виводить книги.
2. Базовий рівень. Створити ієрархію записів медіатеки з абстрактним базовим записом (назва, рік) і похідними «книга», «аудіокнига», «фільм», серіалізувати змішаний список у JSON з [JsonDerivedType] і прочитати його назад. Консольна програма виводить записи з їхнім типом.
3. Високий рівень. Створити бібліотеку медіатеки з ієрархією записів (книга, аудіокнига, фільм), поліморфною серіалізацією в JSON ([JsonDerivedType]), пошуком за типом і експортом звіту в CSV окремо для кожного типу. Застосунок dotnet CLI імпортує й експортує медіатеку; помилки – у Console.Error.
Варіант 19. Розбиття файлів
1. Початковий рівень. Написати консольну програму, що розбиває файл, шлях до якого введено, на частини заданого розміру в байтах (part001, part002…).
2. Базовий рівень. Створити консольну програму, що розбиває файл на частини заданого розміру (part001, part002…) і збирає його з частин у правильному порядку через FileStream з буфером, перевіряючи, що розмір зібраного файлу збігається з вихідним.
3. Високий рівень. Створити бібліотеку розбиття файлу на частини заданого розміру, що записує маніфест JSON з розміром файлу й хешами частин, перед збиранням перевіряє цілісність частин і повідомляє, яких частин бракує. Застосунок dotnet CLI виконує split і join; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 20. Масове перейменування
1. Початковий рівень. Написати консольну програму, що перейменовує всі файли .jpg введеного каталогу за шаблоном photo_001.jpg, photo_002.jpg… в алфавітному порядку імен.
2. Базовий рівень. Створити консольну програму, що перейменовує файли .jpg каталогу за шаблоном photo_001.jpg…, показує попередній перегляд «старе ім’я → нове» без перейменування, перевіряє конфлікти імен і записує журнал перейменувань у CSV.
3. Високий рівень. Створити бібліотеку масового перейменування файлів каталогу за шаблонами ({date}, {n:000}, {name}) з журналом перейменувань і скасуванням останньої операції за журналом. Застосунок dotnet CLI виконує preview, apply, undo; помилки – у Console.Error.
Варіант 21. Табличне сховище
1. Початковий рівень. Написати консольну програму, що записує в двійковий файл через BinaryWriter записи товарів фіксованої довжини (код, ціна, назва до 30 символів) і читає їх через BinaryReader.
2. Базовий рівень. Створити консольну програму сховища товарів у двійковому файлі із записами фіксованої довжини (код, ціна, назва), що читає й оновлює запис за номером через FileStream.Seek і видаляє запис позначкою без переміщення інших записів.
3. Високий рівень. Створити бібліотеку двійкового сховища товарів із записами фіксованої довжини (код, ціна, назва, позначка видалення), індексним файлом (код → номер запису), повторним використанням видалених записів і стисненням файлу. Застосунок dotnet CLI виконує команди CRUD з аргументів; помилки – у Console.Error.
Варіант 22. Трекер звичок
1. Початковий рівень. Написати консольну програму, що зберігає звички та відмітки їх виконання за днями (DateOnly) у JSON-файл і виводить таблицю відміток за поточний тиждень.
2. Базовий рівень. Створити консольну програму трекера звичок (звичка: назва, дати виконання) з JSON-файлом, що обчислює поточну й найдовшу серію виконання кожної звички, зберігає дані після кожної зміни й обробляє пошкоджений файл.
3. Високий рівень. Створити бібліотеку звичок (назва, розклад: щодня або у визначені дні тижня, дати виконання) у JSON з календарем місяця в текстовому файлі та міграцією файлу старої версії формату. Застосунок dotnet CLI виконує команди з аргументів; помилки – у Console.Error.
Варіант 23. Банківські виписки
1. Початковий рівень. Написати консольну програму, що читає CSV-файл банківської виписки (дата, опис, сума) і виводить загальну суму надходжень і витрат.
2. Базовий рівень. Створити консольну програму, що читає CSV-виписки двох банків з різними роздільниками, форматами дат і десятковою комою, нормалізує операції в спільний запис (дата, опис, сума) і зберігає їх у JSON.
3. Високий рівень. Створити бібліотеку імпорту CSV-виписок різних банків з автоматичним визначенням формату за заголовком, нормалізацією операцій (дата, опис, сума), категоризацією за правилами з JSON-файлу (ключове слово → категорія) та звітом сум за категоріями. Застосунок dotnet CLI обробляє каталог виписок; помилки – у Console.Error.
Варіант 24. Орфографічний словник
1. Початковий рівень. Написати консольну програму, що завантажує словник слів з текстового файлу в HashSet<string>, читає текстовий файл і виводить слова, яких немає в словнику.
2. Базовий рівень. Створити консольну програму перевірки орфографії зі словником з текстового файлу в HashSet<string>, що для невідомих слів тексту пропонує схожі слова словника (відстань Левенштейна не більше 2) і зберігає додані користувачем слова в окремий файл.
3. Високий рівень. Створити бібліотеку перевірки орфографії тексту з кількома словниками з текстових файлів, пропозиціями за відстанню Левенштейна з кешем і звітом у JSON з позиціями помилок (рядок, стовпець, слово). Застосунок dotnet CLI перевіряє файл з аргументів; помилки – у Console.Error.
Варіант 25. Медичні візити
1. Початковий рівень. Написати консольну програму, що зберігає візити пацієнтів (пацієнт, дата, лікар, діагноз) у JSON-файл, читає його й виводить історію візитів введеного пацієнта.
2. Базовий рівень. Створити консольну програму медичних візитів (пацієнт, дата DateOnly, лікар, спеціальність-перелічення, діагноз) з JSON-файлом, що використовує JsonStringEnumConverter і атрибути [JsonPropertyName] та виводить візити за вибраною спеціальністю.
3. Високий рівень. Створити бібліотеку медичних карт з окремим JSON-файлом на пацієнта (візити: дата, лікар, спеціальність, діагноз), пошуком за всіма файлами каталогу та експортом звіту лікаря за період у текстовий файл. Застосунок dotnet CLI виконує запити з аргументів; помилки – у Console.Error.
Варіант 26. Спортивний клуб
1. Початковий рівень. Написати консольну програму, що зберігає абонементи членів спортивного клубу (член клубу, тип, дата початку й закінчення) у JSON-файл і виводить абонементи, що закінчуються цього місяця.
2. Базовий рівень. Створити консольну програму спортивного клубу з абонементами в JSON (номер, член клубу, дата закінчення), що читає журнал відвідувань з CSV (дата, номер абонемента), підраховує відвідування за абонементом і записує звіт у текстовий файл.
3. Високий рівень. Створити бібліотеку спортивного клубу з різними типами абонементів (разовий, місячний, безлімітний) і їх поліморфною серіалізацією в JSON, продовженням і заморожуванням абонемента. Застосунок dotnet CLI формує місячний звіт; помилки – у Console.Error.
Варіант 27. HTML-звіт
1. Початковий рівень. Написати консольну програму, що читає JSON-масив товарів (назва, ціна) і записує HTML-файл з таблицею назв і цін.
2. Базовий рівень. Створити консольну програму, що читає JSON-масив товарів (назва, ціна) і записує HTML-файл з таблицею, відсортованою за стовпцем з аргументів, з підсумковим рядком та екрануванням спецсимволів HTML (<, >, &).
3. Високий рівень. Створити бібліотеку генерації звітів з простим шаблоном HTML у файлі ({{title}}, {{rows}}) і будь-яким масивом об’єктів JSON (стовпці з JsonNode). Застосунок dotnet CLI створює звіт з файлу даних і шаблону; помилки – у Console.Error.
Варіант 28. Цілісність файлів
1. Початковий рівень. Написати консольну програму, що обчислює хеш SHA-256 файлу, шлях до якого введено, і виводить його в шістнадцятковому вигляді.
2. Базовий рівень. Створити консольну програму, що обчислює SHA-256 усіх файлів каталогу, зберігає маніфест у JSON (відносний шлях і хеш) і перевіряє каталог за маніфестом, виводячи змінені, нові й видалені файли.
3. Високий рівень. Створити бібліотеку перевірки цілісності каталогу з маніфестом JSON (шлях, розмір, SHA-256), потоковим обчисленням хешу великих файлів і виключеннями за масками з файлу .integrityignore. Застосунок dotnet CLI виконує create і verify; коди завершення: 0 – цілий, 1 – зміни, 2 – помилка.
Варіант 29. Пошук файлів за вмістом
1. Початковий рівень. Написати консольну програму, що знаходить у введеному каталозі всі файли .txt, які містять заданий рядок, і виводить їхні імена.
2. Базовий рівень. Створити консольну програму, що шукає заданий рядок у файлах .txt каталогу, виводить ім’я файлу, номери рядків і фрагменти зі збігами, за опцією шукає без урахування регістру й записує результати у файл.
3. Високий рівень. Створити бібліотеку пошуку за вмістом файлів каталогу з масками файлів, регулярними виразами, пропуском двійкових файлів і звітом у JSON (файл, рядок, фрагмент). Застосунок dotnet CLI приймає каталог і шаблон; помилки доступу до файлів – у Console.Error без зупинки пошуку.
Варіант 30. Збереження гри
1. Початковий рівень. Написати консольну програму, що зберігає стан гри (рівень, здоров’я, позиція, інвентар) у JSON-файл, завантажує його й виводить.
2. Базовий рівень. Створити консольну програму збережень гри (рівень, здоров’я, позиція, інвентар) з кількома слотами в JSON-файлах, датою збереження, перевіркою пошкодженого файлу та автозбереженням через тимчасовий файл.
3. Високий рівень. Створити бібліотеку збережень гри (рівень, здоров’я, позиція, інвентар) у JSON з версією формату та міграцією старих версій (перейменування властивостей через JsonNode). Застосунок dotnet CLI мігрує всі збереження каталогу; помилки – у Console.Error.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Підготувати файли тестових даних для свого варіанта, зокрема з помилками формату, і налаштувати їх копіювання у вихідний каталог.
- Створити рішення та проєкт; моделі даних, класи читання й запису файлів розмістити в окремих файлах.
- Реалізувати завдання обраного рівня складності; усі потоки створювати в
using, шляхи формувати методамиPath. - Перевірити роботу програми за відсутності файлу, з пошкодженим файлом і з файлом, відкритим в іншій програмі; переглянути JSON у візуалізаторі налагоджувача.
- Продемонструвати роботу програми викладачеві, пояснити програмний код і відповісти на контрольні питання.