Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Продажі аптеки
1. Початковий рівень. Створити консольну програму зі списком продажів (record Sale: препарат, аптека, кількість, ціна), заповненим у коді. Відібрати продажі на суму понад 500 грн (Where) і вивести їх за сумою за спаданням (OrderByDescending).
2. Базовий рівень. Створити консольну програму аналізу продажів аптечної мережі (record Sale: препарат, аптека, кількість, ціна; дані з CSV-файлу). Згрупувати продажі за аптеками й препаратами, вивести найпопулярніший препарат кожної аптеки (MaxBy) і частку виручки кожної аптеки. Запит групування записати в синтаксисі методів і в синтаксисі запитів.
3. Високий рівень. Створити бібліотеку класів аналітики аптечної мережі (продаж: дата, препарат, аптека, кількість, ціна) і застосунок dotnet CLI. Бібліотека будує звіт виручки за місяцями й препаратами з підсумками через AggregateBy і знаходить препарати, продажі яких падають від місяця до місяця. Застосунок обробляє CSV продажів зі стандартного введення, опцією --month обмежує звіт одним місяцем; помилки – у Console.Error.
Варіант 2. Приймальна комісія
1. Початковий рівень. Створити консольну програму зі списком вступників (record Applicant: ПІБ, спеціальність, конкурсний бал). Користувач вводить спеціальність; програма виводить її вступників за спаданням бала (Where, OrderByDescending).
2. Базовий рівень. Створити консольну програму приймальної комісії зі списками вступників (ПІБ, спеціальність, бал) і спеціальностей (назва, кількість місць). Для кожної спеціальності вивести кількість заяв, середній і прохідний бал (бал останнього, хто вступає в межах місць). Використати GroupBy, OrderByDescending, Take, Last.
3. Високий рівень. Створити бібліотеку класів зарахування вступників і застосунок dotnet CLI. Вступник (ПІБ, бал) подає до 5 заяв з пріоритетами, спеціальність має кількість місць. Зарахування з’єднує заяви зі спеціальностями (Join) і розподіляє вступників за балом і пріоритетом заяв. Застосунок обробляє заяви зі стандартного введення й виводить списки рекомендованих за спеціальностями; помилки – у Console.Error.
Варіант 3. Фільмотека
1. Початковий рівень. Створити консольну програму зі списком фільмів (record Movie: назва, жанр, рік, рейтинг). Користувач вводить жанр; програма відбирає фільми цього жанру, що вийшли після 2010 року, з рейтингом не нижче 7 і виводить назви за абеткою.
2. Базовий рівень. Створити консольну програму аналізу фільмотеки (фільм: назва, рік, рейтинг, список жанрів). Вивести кількість фільмів і середній рейтинг за жанрами (фільм може мати кілька жанрів – SelectMany), найкращий фільм кожного десятиліття та весь каталог посторінково (Skip, Take).
3. Високий рівень. Створити бібліотеку класів рекомендацій фільмів (фільм: назва, режисер, жанри; перегляд: користувач, фільм) і застосунок dotnet CLI. Бібліотека знаходить фільми, схожі на заданий, за спільними жанрами й режисером (Intersect) і топ фільмів за переглядами користувачів. Застосунок обробляє каталог і перегляди зі стандартного введення й виводить рекомендації; помилки – у Console.Error.
Варіант 4. Авіарейси
1. Початковий рівень. Створити консольну програму зі списком рейсів (record Flight: авіакомпанія, звідки, куди, затримка у хвилинах). Вивести рейси із затримкою понад 30 хвилин, відсортовані за затримкою (Where, OrderByDescending).
2. Базовий рівень. Створити консольну програму аналізу рейсів (авіакомпанія, звідки, куди, затримка у хвилинах; дані з CSV-файлу). Для кожної авіакомпанії обчислити середню затримку та частку вчасних рейсів (GroupBy), вивести 5 найзавантаженіших маршрутів (CountBy за парою міст).
3. Високий рівень. Створити бібліотеку класів аналізу пунктуальності (рейс: номер, звідки, куди, час вильоту й прибуття, затримка) і застосунок dotnet CLI. Бібліотека розподіляє затримки за годинами доби й днями тижня та знаходить пересадки між рейсами (з’єднання за містом прибуття і часом). Застосунок обробляє розклад зі стандартного введення й виводить звіт; помилки – у Console.Error.
Варіант 5. Співробітники
1. Початковий рівень. Створити консольну програму зі списком співробітників (record Employee: ПІБ, відділ, зарплата). Користувач вводить відділ; програма виводить його співробітників із зарплатою вище за середню в компанії (Average, Where).
2. Базовий рівень. Створити консольну програму зі списками відділів (ідентифікатор, назва) і співробітників (ПІБ, ідентифікатор відділу, зарплата). З’єднати їх (Join), вивести фонд оплати та середню зарплату кожного відділу, а також відділи без співробітників (GroupJoin або LeftJoin).
3. Високий рівень. Створити бібліотеку класів аналізу персоналу (співробітник: Id, ПІБ, відділ, зарплата, ManagerId) і застосунок dotnet CLI. Бібліотека будує ієрархію підпорядкування (самоз’єднання за ManagerId), рахує підлеглих кожного керівника на всіх рівнях і знаходить найбільший розрив у зарплатах усередині відділів. Застосунок обробляє CSV зі стандартного введення; помилки – у Console.Error.
Варіант 6. Погодні дані
1. Початковий рівень. Створити консольну програму зі списком щоденних вимірювань за рік (record Measurement: дата, температура, опади), згенерованим у коді. Знайти й вивести найтепліший і найхолодніший дні (MaxBy, MinBy).
2. Базовий рівень. Створити консольну програму аналізу погоди за щоденними вимірюваннями (дата, температура, опади) з CSV-файлу. Обчислити середню температуру й суму опадів за місяцями, найдовший період без опадів і дні, температура яких відхиляється від середньої за місяць понад 8 °C.
3. Високий рівень. Створити бібліотеку класів кліматичного аналізу (вимірювання: станція, дата, температура, опади) і застосунок dotnet CLI. Бібліотека порівнює роки для кожної станції (Zip), обчислює ковзні середні температури та знаходить аномальні дні. Застосунок обробляє дані кількох станцій зі стандартного введення й виводить звіт аномалій; помилки – у Console.Error.
Варіант 7. Прокат інструментів
1. Початковий рівень. Створити консольну програму зі списками інструментів (ідентифікатор, назва) і оренд (інструмент, дата видачі, строк, дата повернення). Вивести оренди, не повернені вчасно, з назвою інструмента (Join) і кількістю днів прострочення.
2. Базовий рівень. Створити консольну програму прокату зі списками клієнтів, інструментів (назва, категорія, ціна за день) і оренд (клієнт, інструмент, кількість днів). З’єднати їх (Join), вивести дохід за категоріями інструментів, клієнтів без оренд (LeftJoin) і найпопулярніші інструменти.
3. Високий рівень. Створити бібліотеку класів прокату (інструмент: назва, категорія; оренда: інструмент, дати видачі й повернення) і застосунок dotnet CLI. Бібліотека обчислює завантаженість інструментів за періодами (перетин інтервалів оренди) і рекомендує докупити інструменти з найвищою завантаженістю. Застосунок обробляє журнал оренд зі стандартного введення; помилки – у Console.Error.
Варіант 8. Шаховий турнір
1. Початковий рівень. Створити консольну програму зі списком партій шахового турніру (record Game: білі, чорні, результат – перемога білих, нічия або перемога чорних). Підрахувати очки кожного учасника (GroupBy, Sum) і вивести їх за спаданням.
2. Базовий рівень. Створити консольну програму турнірної таблиці за результатами шахових партій (білі, чорні, результат). Вивести учасників з очками, кількістю перемог і коефіцієнтом Бухгольца (сума очок суперників), відсортованих за кількома ключами (OrderByDescending, ThenByDescending).
3. Високий рівень. Створити бібліотеку класів шахового турніру за швейцарською системою (партія: тур, білі, чорні, результат) і застосунок dotnet CLI. Бібліотека рахує очки учасників і формує пари наступного туру: суперники з однаковими очками, без повторних зустрічей. Застосунок обробляє результати турів зі стандартного введення й виводить пари; помилки – у Console.Error.
Варіант 9. Інтернет-магазин
1. Початковий рівень. Створити консольну програму зі списком замовлень (record Order: клієнт, дата, сума). Користувач вводить дату; програма виводить замовлення за останній тиждень до неї, відсортовані за датою.
2. Базовий рівень. Створити консольну програму аналізу замовлень інтернет-магазину (клієнт, дата, сума; дані з CSV-файлу). Обчислити середній чек, кількість замовлень кожного клієнта (CountBy), клієнтів, що замовляли щомісяця, і найбільше замовлення кожного місяця (MaxBy).
3. Високий рівень. Створити бібліотеку класів RFM-аналізу клієнтів (замовлення: клієнт, дата, сума) і застосунок dotnet CLI. Бібліотека обчислює для кожного клієнта давність останнього замовлення, частоту й суму, ділить клієнтів на сегменти та будує звіт за сегментами. Застосунок обробляє замовлення зі стандартного введення; помилки – у Console.Error.
Варіант 10. Імена новонароджених
1. Початковий рівень. Створити консольну програму зі списком записів про імена новонароджених (record NameRecord: рік, ім’я, стать, кількість). Користувач вводить рік; програма виводить 10 найпопулярніших імен цього року.
2. Базовий рівень. Створити консольну програму аналізу імен новонароджених (рік, ім’я, стать, кількість; дані з CSV-файлу). Для кожного року вивести найпопулярніше ім’я хлопчиків і дівчаток, імена, що з’явилися вперше (Except з попередніми роками), та розподіл імен за першою літерою.
3. Високий рівень. Створити бібліотеку класів аналізу трендів імен (запис: рік, ім’я, стать, кількість) і застосунок dotnet CLI. Бібліотека обчислює ранг імен у кожному десятилітті, зміну рангу між десятиліттями та «імена, що зростають найшвидше». Застосунок обробляє CSV зі стандартного введення й виводить звіт; помилки – у Console.Error.
Варіант 11. Олімпійські медалі
1. Початковий рівень. Створити консольну програму зі списком олімпійських нагород (record Award: країна, вид спорту, медаль). Підрахувати кількість медалей кожної країни (CountBy) і вивести країни за спаданням.
2. Базовий рівень. Створити консольну програму медального заліку за списком нагород (країна, вид спорту, медаль). Вивести країни, відсортовані за золотом, сріблом і бронзою (ThenByDescending), найуспішнішу країну в кожному виді спорту та країни без золота.
3. Високий рівень. Створити бібліотеку класів статистики Олімпіад (нагорода: ігри, країна, вид спорту, медаль; країна: назва, населення) і застосунок dotnet CLI. Бібліотека порівнює результати країни між іграми (Zip, Join) і рахує медалі на душу населення. Застосунок обробляє дані кількох ігор зі стандартного введення й виводить звіт; помилки – у Console.Error.
Варіант 12. Нерухомість
1. Початковий рівень. Створити консольну програму зі списком квартир (record Flat: район, площа, кімнати, ціна). Користувач вводить район і бюджет; програма виводить квартири в цих межах, відсортовані за ціною за квадратний метр.
2. Базовий рівень. Створити консольну програму аналізу оголошень про квартири (район, площа, кімнати, ціна; дані з CSV-файлу). Обчислити медіанну й середню ціну за квадратний метр за районами, кількість пропозицій за кількістю кімнат (CountBy) і найвигідніші пропозиції кожного району.
3. Високий рівень. Створити бібліотеку класів оцінки нерухомості (оголошення: район, площа, поверх, кімнати, ціна) і застосунок dotnet CLI. Бібліотека знаходить аналоги квартири (той самий район, площа ±10 %, поверх) і виявляє оголошення із завищеною ціною за квадратний метр порівняно з аналогами. Застосунок обробляє оголошення зі стандартного введення; помилки – у Console.Error.
Варіант 13. Лікарня
1. Початковий рівень. Створити консольну програму зі списком прийомів (record Visit: пацієнт, лікар, дата). Користувач вводить лікаря; програма виводить його пацієнтів, відсортованих за датою прийому.
2. Базовий рівень. Створити консольну програму лікарні зі списками лікарів (ідентифікатор, ПІБ, спеціальність), діагнозів і прийомів (дата, лікар, пацієнт, діагноз). З’єднати прийоми з лікарями й діагнозами (Join), вивести завантаженість лікарів за днями тижня та найпоширеніші діагнози за спеціальностями.
3. Високий рівень. Створити бібліотеку класів аналізу роботи лікарні (прийом: пацієнт, лікар, діагноз, дата) і застосунок dotnet CLI. Бібліотека знаходить повторні звернення з тим самим діагнозом протягом 30 днів і середню тривалість лікування (від першого до останнього прийому) за діагнозами. Застосунок обробляє журнал прийомів зі стандартного введення; помилки – у Console.Error.
Варіант 14. Таксопарк
1. Початковий рівень. Створити консольну програму зі списком поїздок таксі (record Ride: водій, дата й час, відстань, вартість). Користувач вводить водія й день; програма виводить поїздки водія за цей день.
2. Базовий рівень. Створити консольну програму аналізу поїздок таксопарку (водій, дата й час, відстань, вартість; дані з CSV-файлу). Обчислити виручку й середню вартість кілометра для кожного водія (AggregateBy), найкращого водія кожного дня та години пік.
3. Високий рівень. Створити бібліотеку класів аналітики таксопарку (поїздка: автомобіль, водій, відстань, вартість; заправка: автомобіль, літри, сума) і застосунок dotnet CLI. Бібліотека з’єднує поїздки із заправками (Join), обчислює витрати на пальне й прибутковість кожного автомобіля. Застосунок обробляє журнали поїздок і заправок зі стандартного введення; помилки – у Console.Error.
Варіант 15. Музичні чарти
1. Початковий рівень. Створити консольну програму зі списком прослуховувань (record Play: виконавець, трек, жанр, кількість). Вивести топ-10 треків за кількістю прослуховувань (OrderByDescending, Take).
2. Базовий рівень. Створити консольну програму музичного чарту за прослуховуваннями (виконавець, трек, жанр, кількість; дані з CSV-файлу). Вивести топ виконавців за сумою прослуховувань, частку кожного жанру та виконавців з кількома треками в топ-50.
3. Високий рівень. Створити бібліотеку класів тижневих чартів (запис: тиждень, позиція, виконавець, трек) і застосунок dotnet CLI. Бібліотека обчислює зміну позицій між тижнями (Join за треком), нові треки тижня та кількість тижнів кожного треку в чарті. Застосунок обробляє чарти зі стандартного введення; помилки – у Console.Error.
Варіант 16. Енергоспоживання будинку
1. Початковий рівень. Створити консольну програму зі списком показників лічильника (record Reading: рік, місяць, кВт·год). Знайти й вивести місяць з найбільшим споживанням електроенергії (MaxBy).
2. Базовий рівень. Створити консольну програму аналізу енергоспоживання за місячними показниками лічильника (рік, місяць, кВт·год) за два роки. Обчислити споживання за сезонами, порівняти місяці з попереднім роком (Zip) і знайти місяці з аномальним зростанням понад 30 %.
3. Високий рівень. Створити бібліотеку класів аналізу енергоспоживання кількох квартир (показник: квартира, місяць, кВт·год; тариф: період дії, ціна) і застосунок dotnet CLI. Бібліотека обчислює вартість споживання за тарифами та прогноз на наступний місяць. Застосунок обробляє показники зі стандартного введення й виводить звіт; помилки – у Console.Error.
Варіант 17. Магазин ігор
1. Початковий рівень. Створити консольну програму зі списком ігор (record Game: назва, платформа, рейтинг, ціна). Користувач вводить платформу; програма виводить її ігри з рейтингом понад 8, відсортовані за ціною.
2. Базовий рівень. Створити консольну програму каталогу ігор (гра: назва, рейтинг, списки жанрів і платформ). Вивести всі унікальні жанри (SelectMany, Distinct), кількість ігор за жанрами та ігри, доступні на всіх платформах (Intersect).
3. Високий рівень. Створити бібліотеку класів каталогу ігор (гра: назва, видавець, рік, жанри, платформи, ціна, знижка) з фільтрами, ціною зі знижкою й групуванням за видавцями та роками. Застосунок dotnet CLI читає каталог з CSV-файлу й виконує пошук з опціями --platform, --genre, --sort; помилки – у Console.Error.
Варіант 18. Громадський транспорт
1. Початковий рівень. Створити консольну програму зі списком маршрутів громадського транспорту (record Route: номер, список зупинок). Користувач вводить зупинку; програма виводить маршрути, що через неї проходять.
2. Базовий рівень. Створити консольну програму аналізу транспортної мережі (маршрут: номер, упорядкований список зупинок). Знайти зупинки пересадок (спільні для кількох маршрутів, SelectMany), найдовший маршрут і маршрути, що з’єднують дві введені зупинки без пересадки.
3. Високий рівень. Створити бібліотеку класів планування поїздок (маршрут: номер, упорядкований список зупинок) і застосунок dotnet CLI. Бібліотека знаходить поїздку між двома зупинками без пересадки або з однією пересадкою (з’єднання маршрутів за спільною зупинкою). Застосунок обробляє мережу зі стандартного введення, зупинки задаються аргументами; помилки – у Console.Error.
Варіант 19. Пекарня
1. Початковий рівень. Створити консольну програму зі списком денних даних пекарні (record BakeryDay: дата, виріб, випечено, продано). Вивести вироби й дні, коли їх розпродано повністю.
2. Базовий рівень. Створити консольну програму аналізу пекарні за денними даними (дата, виріб, ціна, випечено, продано). Обчислити виручку й списання за виробами та днями тижня, найприбутковіші вироби та рекомендовану кількість випічки (середній продаж за днем тижня).
3. Високий рівень. Створити бібліотеку класів планування виробництва пекарні (план: виріб, кількість на день; рецепт: виріб, інгредієнт, кількість на одиницю) і застосунок dotnet CLI. Бібліотека з’єднує вироби з інгредієнтами (Join) і обчислює потребу в інгредієнтах на тиждень. Застосунок обробляє план і рецепти зі стандартного введення; помилки – у Console.Error.
Варіант 20. Логістика посилок
1. Початковий рівень. Створити консольну програму зі списком посилок (record Parcel: номер, звідки, куди, дата відправлення, дата доставки). Вивести посилки, доставлені довше ніж за 3 дні.
2. Базовий рівень. Створити консольну програму аналізу доставки посилок (відділення відправлення й отримання, міста, вага, дати відправлення й доставки). Обчислити середній термін доставки між містами, відділення з найбільшими затримками та розподіл посилок за ваговими категоріями.
3. Високий рівень. Створити бібліотеку класів моніторингу доставки (подія трекінгу: посилка, час, відділення, етап) і застосунок dotnet CLI. Бібліотека відновлює етапи руху кожної посилки, виявляє «загублені» (без нових подій понад 5 днів) і будує звіт пунктуальності. Застосунок обробляє події трекінгу зі стандартного введення; помилки – у Console.Error.
Варіант 21. Якість повітря
1. Початковий рівень. Створити консольну програму зі списком вимірювань якості повітря (record AirSample: станція, дата, PM2.5). Користувач вводить станцію; програма виводить дні, коли PM2.5 на ній перевищував норму.
2. Базовий рівень. Створити консольну програму аналізу якості повітря за вимірюваннями (станція, дата, PM2.5; дані з CSV-файлу). Обчислити середні показники за станціями й місяцями, найбрудніший день кожної станції (MaxBy) і частку днів з перевищенням норми.
3. Високий рівень. Створити бібліотеку класів розрахунку індексу якості повітря (вимірювання: станція, район, дата, PM2.5, PM10, озон) і застосунок dotnet CLI. Бібліотека обчислює індекс за кількома забруднювачами, відносить дні до категорій і порівнює райони. Застосунок обробляє вимірювання зі стандартного введення; помилки – у Console.Error.
Варіант 22. Велогонка
1. Початковий рівень. Створити консольну програму зі списком результатів етапу велогонки (record StageResult: гонщик, команда, час). Вивести десятку найшвидших гонщиків (OrderBy, Take).
2. Базовий рівень. Створити консольну програму підсумків велогонки за результатами етапів (етап, гонщик, команда, час). Обчислити загальний залік за сумою часу (лише гонщики, що завершили всі етапи), відставання від лідера та командний залік.
3. Високий рівень. Створити бібліотеку класів велогонки (результат: етап, гонщик, команда, час, місця на проміжних спринтах) і застосунок dotnet CLI. Бібліотека враховує бонусні секунди за перші місця, веде спринтерський залік та історію лідерів після кожного етапу. Застосунок обробляє результати зі стандартного введення; помилки – у Console.Error.
Варіант 23. Вибори
1. Початковий рівень. Створити консольну програму зі списком протоколів дільниць (record Protocol: дільниця, кандидат, голоси). Підрахувати сумарну кількість голосів кожного кандидата й вивести їх за спаданням.
2. Базовий рівень. Створити консольну програму підсумків виборів за протоколами (дільниця, район, кількість виборців, голоси за кожного кандидата). Обчислити явку на дільницях, відсотки кандидатів, переможця в кожному районі та дільниці з аномальною явкою.
3. Високий рівень. Створити бібліотеку класів підрахунку голосів (протокол: дільниця, район, кандидат, голоси) і застосунок dotnet CLI. Бібліотека визначає переможця або учасників другого туру (двоє лідерів, якщо ніхто не набрав 50 %) і будує карту переможців за районами. Застосунок обробляє протоколи зі стандартного введення; помилки – у Console.Error.
Варіант 24. Наукові публікації
1. Початковий рівень. Створити консольну програму зі списком публікацій (record Paper: назва, рік, автори, цитування). Користувач вводить автора; програма виводить його публікації, відсортовані за кількістю цитувань.
2. Базовий рівень. Створити консольну програму аналізу наукових публікацій (назва, рік, список авторів, цитування). Обчислити h-індекс кожного автора (SelectMany), кількість публікацій за роками та спільні публікації двох введених авторів.
3. Високий рівень. Створити бібліотеку класів наукометрії (публікація: назва, рік, автори, цитування за роками) і застосунок dotnet CLI. Бібліотека будує мережу співавторства, знаходить найактивніші пари співавторів і динаміку цитувань кожного автора. Застосунок обробляє дані зі стандартного введення; помилки – у Console.Error.
Варіант 25. Каршеринг
1. Початковий рівень. Створити консольну програму зі списком поїздок каршерингу (record Trip: авто, зона старту, зона фінішу, хвилини). Вивести поїздки, довші за годину, за спаданням тривалості.
2. Базовий рівень. Створити консольну програму аналізу каршерингу за поїздками (авто, зони старту й фінішу, час початку, хвилини, вартість). Обчислити середню тривалість і виручку за зонами, найпопулярніші пари зон і автомобілі, що найдовше простоювали між поїздками.
3. Високий рівень. Створити бібліотеку класів перерозподілу автомобілів каршерингу (поїздка: авто, зони старту й фінішу, час) і застосунок dotnet CLI. Бібліотека обчислює баланс прибуттів і відправлень за зонами та годинами. Застосунок обробляє поїздки зі стандартного введення й рекомендує переміщення авто із зон надлишку в зони нестачі; помилки – у Console.Error.
Варіант 26. Розклад університету
1. Початковий рівень. Створити консольну програму зі списком занять (record Lesson: день тижня, номер пари, викладач, група, аудиторія). Користувач вводить викладача; програма виводить його заняття, упорядковані за днем тижня й номером пари.
2. Базовий рівень. Створити консольну програму аналізу розкладу університету (заняття: день, пара, викладач, група, аудиторія; список аудиторій). Знайти аудиторії, вільні в задану пару (Except), навантаження викладачів у годинах і групи з «вікнами» між парами.
3. Високий рівень. Створити бібліотеку класів перевірки розкладу (заняття: день, пара, викладач, група, аудиторія) і застосунок dotnet CLI. Бібліотека через групування виявляє конфлікти: викладач, група чи аудиторія зайняті двічі в одну пару. Застосунок обробляє розклад зі стандартного введення й виводить конфлікти; помилки – у Console.Error.
Варіант 27. Туристичні тури
1. Початковий рівень. Створити консольну програму зі списком турів (record Tour: країна, тривалість у днях, ціна, дата початку). Користувач вводить країну й бюджет; програма виводить відповідні тури, відсортовані за тривалістю.
2. Базовий рівень. Створити консольну програму аналізу туристичних турів (країна, тривалість, ціна, дата початку, кількість проданих місць). Обчислити середню ціну дня туру за країнами, сезонність попиту за місяцями та найпопулярніші країни.
3. Високий рівень. Створити бібліотеку класів туроператора (тур: країна, дата, кількість місць; бронювання: тур, клієнт, місця) і застосунок dotnet CLI. Бібліотека обчислює заповненість турів і прогноз попиту на країни за минулими сезонами. Застосунок обробляє тури й бронювання зі стандартного введення; помилки – у Console.Error.
Варіант 28. Мобільний оператор
1. Початковий рівень. Створити консольну програму зі списком дзвінків (record Call: абонент, дата, хвилини). Користувач вводить абонента й місяць; програма виводить сумарну тривалість його дзвінків за цей місяць.
2. Базовий рівень. Створити консольну програму мобільного оператора зі списками тарифів (назва, ліміт хвилин), абонентів (номер, тариф) і дзвінків (абонент, дата, хвилини). З’єднати абонентів з тарифами (Join), знайти перевищення лімітів хвилин, середню тривалість дзвінка та найактивніших абонентів.
3. Високий рівень. Створити бібліотеку класів тарифікації (тариф: абонплата, ліміт хвилин, ціна хвилини понад ліміт; дзвінок: абонент, дата, хвилини) і застосунок dotnet CLI. Бібліотека обчислює вартість історії дзвінків кожного абонента за кожним тарифом і вибирає оптимальний. Застосунок обробляє журнал дзвінків і тарифи зі стандартного введення; помилки – у Console.Error.
Варіант 29. Відгуки ресторанів
1. Початковий рівень. Створити консольну програму зі списком відгуків (record Review: ресторан, автор, оцінка 1–5, текст). Користувач вводить ресторан; програма виводить його відгуки з оцінкою 1–2.
2. Базовий рівень. Створити консольну програму аналізу відгуків ресторанів (заклад, автор, оцінка, текст). Обчислити середню оцінку й кількість відгуків закладів, найчастіші слова в негативних відгуках (SelectMany, CountBy) і рейтинг закладів з мінімальною кількістю відгуків.
3. Високий рівень. Створити бібліотеку класів репутації закладів (відгук: заклад, автор, дата, оцінка) і застосунок dotnet CLI. Бібліотека обчислює рейтинг з більшою вагою свіжих відгуків і виявляє підозрілих авторів (багато оцінок 5 за один день). Застосунок обробляє відгуки зі стандартного введення; помилки – у Console.Error.
Варіант 30. Шкільна їдальня
1. Початковий рівень. Створити консольну програму зі списком страв меню (record Dish: назва, калорійність, список алергенів). Користувач вводить алерген; програма виводить страви без нього.
2. Базовий рівень. Створити консольну програму аналізу меню шкільної їдальні (день, страва, калорійність). Обчислити калорійність меню за днями, страви, що повторюються найчастіше, і дні з перевищенням заданої норми калорій.
3. Високий рівень. Створити бібліотеку класів планування меню (страва: назва, білки, жири, вуглеводи; меню: день, страви) і застосунок dotnet CLI. Бібліотека перевіряє баланс білків, жирів і вуглеводів за днями та різноманітність страв за тиждень. Застосунок обробляє меню зі стандартного введення й виводить порушення; помилки – у Console.Error.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Підготувати тестові дані для свого варіанта (не менше 15 записів кожного виду), що містять граничні випадки: порожні групи, записи без пари для з’єднання, однакові значення ключів.
- Створити рішення та проєкт; моделі даних оголосити записами в окремих файлах.
- Реалізувати запити відповідно до обраного рівня складності; щонайменше один запит записати в обох синтаксисах.
- Перевірити результати запитів у налагоджувачі (Results View) і пояснити, де виконується кожен запит.
- Продемонструвати роботу програми викладачеві, пояснити програмний код і відповісти на контрольні питання.