Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Комунальні платежі
1. Початковий рівень. Створити консольну програму, яка за попередніми та поточними показами лічильників електроенергії (12 450 і 12 618 кВт·год), води (341 і 349 м³) і газу (2 105 і 2 163 м³) та тарифами 4,32 грн, 30,38 грн і 7,96 грн за одиницю (значення задані в програмі) обчислює в типі decimal та виводить споживання, вартість кожної послуги й загальну суму до сплати.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача попередні та поточні покази лічильників електроенергії, води й газу та тарифи за одиницю (грн), перевіряє, що покази невід’ємні, а поточні не менші за попередні, та виводить вирівняну таблицю «послуга – споживання – тариф – сума» з підсумком, округленим до копійок у типі decimal.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує покази лічильників в аргументах у форматі послуга:попередні:поточні (наприклад, power:12450:12618 water:341:349) і тарифи опціями --power, --water, --gas. Для електроенергії опція --limit задає обсяг, понад який застосовується тариф з опції --power-high. Програма виводить таблицю з підсумком, частку кожної послуги у відсотках і суму з округленням MidpointRounding.AwayFromZero. Некоректні записи повідомляються в потік помилок; програма повертає 0, 1 (частину записів відхилено) або 2 (помилка опцій); опція --help виводить опис використання.
Варіант 2. Розстрочка покупки
1. Початковий рівень. Створити консольну програму, яка для покупки ноутбука за 38 999 грн у розстрочку на 10 місяців із разовою комісією 2,9 % (значення задані в програмі) обчислює в типі decimal та виводить суму комісії, загальну суму та щомісячний платіж, округлений до копійок.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача ціну товару (грн), кількість місяців (від 2 до 24) і щомісячну комісію у відсотках від ціни, перевіряє введені дані та виводить щомісячний платіж, округлений до копійок, суму останнього платежу з урахуванням копійок, що залишилися після округлення, загальну переплату та її частку від ціни у відсотках.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає опції --price, --months і --fee (щомісячна комісія, %) та необов’язкову опцію --credit (річна ставка кредиту, %). Програма виводить порівняльну таблицю двох способів оплати: розстрочки (рівні платежі з комісією, останній платіж коригує копійки) і кредиту з ануїтетним платежем P · i / (1 − (1 + i)−n), де i – місячна ставка, n – кількість місяців: щомісячний платіж, загальна сума, переплата. Грошові обчислення виконуються в decimal, степінь – у double з явним перетворенням. Некоректні опції відхиляються з повідомленням у потік помилок і кодом завершення 2; --help виводить довідку.
Варіант 3. Розподіл рахунку
1. Початковий рівень. Створити консольну програму, яка для рахунку в кафе на 1 847,50 грн, чайових 10 % і 4 осіб (значення задані в програмі) обчислює в типі decimal та виводить суму чайових, загальну суму та частку кожної особи з округленням до копійок.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача суму рахунку (грн), відсоток чайових (від 0 до 30) і кількість осіб, перевіряє введені дані та ділить загальну суму, переведену в копійки (тип long), цілочисельним діленням: виводить частку кожної особи та кількість копійок остачі, які сплачує перша особа, щоб сума часток точно дорівнювала рахунку.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує суму рахунку першим аргументом і ваги учасників у форматі ім’я:вага (наприклад, Олена:1 Петро:2 Іра:1,5), а також опції --tip (відсоток чайових) і --round (крок округлення часток у гривнях: 1, 5 або 10). Програма розподіляє загальну суму пропорційно вагам, округлює частки вгору до кроку (Math.Ceiling) і виводить таблицю «учасник – вага – частка – до сплати», суму переплати через округлення та перевірку, що сума до сплати не менша за рахунок. Помилки введення виводяться в потік помилок; коди завершення: 0 – успіх, 2 – помилка аргументів; --help виводить довідку.
Варіант 4. Колір ARGB і прозорість
1. Початковий рівень. Створити консольну програму, яка упаковує компоненти кольору A = 128, R = 255, G = 99, B = 71 (значення задані в програмі) в одне число типу uint у форматі 0xAARRGGBB за допомогою зсувів і побітового АБО та виводить його в шістнадцятковому, десятковому та двійковому записі.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача колір у шістнадцятковому форматі AARRGGBB (8 цифр), перетворює його на uint, виділяє компоненти A, R, G, B зсувами та маскою 0xFF, виводить їх у десятковому вигляді, прозорість у відсотках і протилежний колір (інвертовані біти RGB зі збереженням альфа-каналу).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який змішує колір переднього плану з кольором фону за альфа-каналом. Кольори задаються опціями --fg AARRGGBB і --bg RRGGBB; опція --steps N виводить таблицю для прозорості від 0 до 255 з N кроками. Для кожного каналу результат обчислюється цілочисельно: (src · a + dst · (255 − a) + 127) / 255; у таблиці виводяться альфа, HEX-код результату та його яскравість 0,299R + 0,587G + 0,114B. Некоректний HEX-запис відхиляється з повідомленням у потік помилок і кодом завершення 2; --help виводить довідку.
Варіант 5. Права доступу до файлу
1. Початковий рівень. Створити консольну програму, яка для прав доступу rwxr-x--- (задані в програмі бітовими масками для власника, групи та інших) обчислює числове значення прав побітовими операціями та виводить його у вісімковому (750), десятковому та двійковому записі.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача права доступу у вісімковому записі з трьох цифр (наприклад, 644), перевіряє, що кожна цифра від 0 до 7, перетворює запис на число (Convert.ToInt32(s, 8)) і за допомогою масок виводить символьне подання rw-r--r-- та окремо, чи можуть власник, група й інші читати, записувати та виконувати файл.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає початкові права у вісімковому або символьному записі та послідовність змін у стилі chmod: u+x, g-w, o=r, a+r (наприклад, 644 u+x g-r o=). Кожна зміна виконується побітовими операціями |= і &= ~, а результат після кожного кроку виводиться таблицею «зміна – вісімковий – символьний». Опція --umask 022 застосовує маску до початкових прав. Некоректні записи відхиляються з повідомленням у потік помилок і кодом завершення 2; --help виводить довідку.
Варіант 6. Пульсові зони тренування
1. Початковий рівень. Створити консольну програму, яка для людини віком 20 років із пульсом спокою 62 уд/хв (значення задані в програмі) обчислює максимальний пульс 220 − вік і за формулою Карвонена «спокій + (максимум − спокій) · інтенсивність» виводить межі зони 60–70 % з округленням до цілого.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача вік (від 10 до 100 років) і пульс спокою (від 30 до 120 уд/хв), перевіряє введені дані та виводить вирівняну таблицю п’яти тренувальних зон (50–60, 60–70, 70–80, 80–90, 90–100 %) з межами пульсу, округленими Math.Round до цілих ударів.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає опції --age, --rest і --formula tanaka|classic (максимальний пульс 208 − 0,7 · вік або 220 − вік) та аргументи з відрізками тренування у форматі хвилини@пульс (наприклад, 20@128 15@152 10@171). Програма виводить таблицю зон, визначає зону кожного відрізка, сумарний час у кожній зоні та середньозважений пульс тренування. Відрізки з пульсом поза межами 30–230 відхиляються з повідомленням у потік помилок; коди завершення: 0 – успіх, 1 – частину даних відхилено, 2 – помилка опцій.
Варіант 7. Витрата пального
1. Початковий рівень. Створити консольну програму, яка для автомобіля, що проїхав 523 км і витратив 38,7 л пального за ціною 57,99 грн/л (значення задані в програмі), обчислює та виводить витрату в л/100 км, вартість поїздки в decimal і вартість 1 км з двома знаками після коми.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача витрату пального в л/100 км, перевіряє, що значення додатне, та виводить еквівалентну витрату в кілометрах на літр, милях на галон США (1 миля = 1,609344 км, 1 галон = 3,785411784 л) і милях на британський галон (4,54609 л).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує записи заправок у форматі одометр:літри:ціна (наприклад, 10250:42,5:57,99 10830:40,1:58,49) і опцію --units metric|us. Програма виводить таблицю проміжків між заправками з пробігом, витратою (л/100 км або милі на галон), вартістю в decimal, а під таблицею – загальний пробіг, середню витрату та загальну вартість. Записи зі спадаючим одометром або від’ємними значеннями відхиляються з повідомленням у потік помилок; --help виводить довідку.
Варіант 8. Швидкість завантаження
1. Початковий рівень. Створити консольну програму, яка для файлу розміром 4,7 ГБ і швидкості з’єднання 100 Мбіт/с (значення задані в програмі) обчислює швидкість у мегабайтах за секунду та час завантаження у форматі «X год Y хв Z с» за допомогою цілочисельного ділення та операції %.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача розмір файлу, одиницю розміру (МБ або ГБ) і швидкість з’єднання в Мбіт/с, перевіряє введені дані та виводить час завантаження в секундах і у форматі гг:хх:сс, а також скільки таких файлів можна завантажити за добу.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає розміри файлів з одиницями (700MB 4.7GB 1.5GiB 350MiB) та опції --speed (Мбіт/с) і --overhead (накладні витрати протоколу, %). Програма враховує різницю між десятковими (1000) і двійковими (1024) одиницями, виводить таблицю «файл – байти (long) – час», загальний розмір і загальний час у форматі д гг:хх:сс. Невідомі одиниці відхиляються з повідомленням у потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 9. Двозонний тариф на електроенергію
1. Початковий рівень. Створити консольну програму, яка для споживання 180 кВт·год удень і 95 кВт·год уночі за тарифу 4,32 грн/кВт·год і нічного коефіцієнта 0,5 (значення задані в програмі) обчислює в decimal та виводить вартість за кожною зоною, загальну вартість і економію порівняно з однозонним тарифом.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача потужність приладу (Вт), кількість годин роботи на добу вдень і вночі, тариф (грн/кВт·год) і нічний коефіцієнт (від 0 до 1), перевіряє введені дані та виводить місячне (30 днів) споживання й вартість за однозонним і двозонним тарифами та економію у відсотках.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує прилади у форматі назва:вати:години_день:години_ніч (наприклад, бойлер:2000:1:3 пральна:900:1,5:0) та опції --tariff, --night-factor і --days. Програма виводить таблицю приладів зі споживанням і вартістю за обома тарифами, підсумковий рядок, частку нічного споживання у відсотках і висновок, який тариф вигідніший. Некоректні записи повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 10. Кидок під кутом до горизонту
1. Початковий рівень. Створити консольну програму, яка для тіла, кинутого зі швидкістю 20 м/с під кутом 35° до горизонту (g = 9,81 м/с², значення задані в програмі), обчислює та виводить час польоту, максимальну висоту та дальність польоту; кут переводиться в радіани.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача початкову швидкість (м/с) і кут кидка в градусах, перевіряє, що швидкість додатна, а кут від 0 до 90, та виводить час польоту, максимальну висоту, дальність і швидкість у найвищій точці з двома знаками після коми.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає опції --speed, --height (початкова висота, м), --angles (перелік кутів, наприклад 15,30,45,60) і --planet earth|moon|mars з відповідним прискоренням вільного падіння. Програма виводить таблицю «кут – час – максимальна висота – дальність» (для ненульової висоти час визначається як додатний корінь квадратного рівняння) і кут з найбільшою дальністю серед заданих. Некоректні значення відхиляються з повідомленням у потік помилок і кодом завершення 2; --help виводить довідку.
Варіант 11. Точка роси
1. Початковий рівень. Створити консольну програму, яка для температури повітря T = 24 °C і відносної вологості RH = 65 % (значення задані в програмі) обчислює точку роси за формулою Магнуса: γ = ln(RH/100) + bT/(c + T), Td = c · γ/(b − γ), де b = 17,62, c = 243,12 °C, та виводить результат з одним знаком після коми.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача температуру T (від −40 до 50 °C) і відносну вологість RH (від 1 до 100 %), перевіряє введені дані та виводить точку роси за формулою Магнуса, різницю між температурою та точкою роси й абсолютну вологість повітря в г/м³: 6,112 · e17,67 · T/(T + 243,5) · RH · 2,1674 / (273,15 + T).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує вимірювання у форматі гг:хх@температура@вологість (наприклад, 06:00@12,5@88) і опцію --units c|f (одиниці введення та виведення). Програма виводить таблицю «час – температура – вологість – точка роси», позначає вимірювання з ризиком туману (різниця температури та точки роси менша за 2 °C) і виводить мінімальну та максимальну точку роси й середню відносну вологість. Помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 12. Позначка часу Unix
1. Початковий рівень. Створити консольну програму, яка для позначки часу Unix 1 789 000 000 с (кількість секунд від 00:00:00 1 січня 1970 року за UTC, значення задане в програмі) обчислює за допомогою / і % кількість повних діб від початку епохи та час доби у форматі гг:хх:сс і виводить дату, отриману методом DateTimeOffset.FromUnixTimeSeconds.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача позначку часу Unix (ціле число типу long) і зміщення місцевого часу відносно UTC у годинах, перевіряє введення та виводить дату й час за UTC і за місцевим часом, ознаку, чи вміщується значення в int, і кількість діб, годин і хвилин до 03:14:08 UTC 19 січня 2038 року, коли позначка часу перестає вміщуватися в int.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який перетворює позначки часу Unix на дати та навпаки: аргументи-числа сприймаються як секунди (або мілісекунди з опцією --ms), аргументи виду рррр-ММ-ддTгг:хх:сс – як дати UTC. Програма виводить таблицю «введено – секунди – мілісекунди – дата UTC», виконуючи множення на 1000 у перевіреному контексті checked і повідомляючи про переповнення long в потік помилок; опція --int32 додатково позначає значення, що не вміщуються в int. Коди завершення: 0 – успіх, 1 – є помилки; --help виводить довідку.
Варіант 13. Заробітна плата
1. Початковий рівень. Створити консольну програму, яка для нарахованої заробітної плати 32 500 грн (значення задане в програмі) обчислює в decimal та виводить податок на доходи фізичних осіб 18 %, військовий збір 5 %, суму до виплати та єдиний соціальний внесок 22 %, який сплачує роботодавець, з округленням до копійок.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача оклад (грн), кількість відпрацьованих і робочих днів місяця та відсоток премії, перевіряє введені дані та виводить вирівняною таблицею нараховану суму пропорційно відпрацьованим дням, премію, утримання (ПДФО 18 %, військовий збір 5 %), суму до виплати та загальні витрати роботодавця з ЄСВ 22 %.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує працівників у форматі прізвище:оклад:відпрацьовані_дні (наприклад, Коваль:28000:21 Бондар:35500:18) та опції --workdays, --bonus (%) і --pdfo, --military, --esv (ставки у відсотках, за замовчуванням 18, 5 і 22). Програма виводить відомість «прізвище – нараховано – ПДФО – військовий збір – до виплати – ЄСВ» з підсумковим рядком; усі суми в decimal з округленням AwayFromZero. Некоректні записи повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 14. Ціна зі знижками
1. Початковий рівень. Створити консольну програму, яка для товару за 2 499 грн (з ПДВ 20 %) і двох послідовних знижок 15 % та 10 % (значення задані в програмі) обчислює в decimal та виводить ціну після кожної знижки, суму ПДВ у кінцевій ціні та загальну знижку у відсотках (вона менша за 25 %).
2. Базовий рівень. Створити консольну програму, яка запитує в користувача ціну товару та дві знижки у відсотках, перевіряє введені дані (знижки від 0 до 90) та виводить кінцеву ціну за послідовними знижками й за сумарною знижкою, різницю між ними, а також кінцеву ціну, округлену до копійок режимами ToEven і AwayFromZero.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує товари у форматі назва:ціна:кількість і опції знижок: --percent (відсоток на весь чек), --coupon (фіксована сума в гривнях), --third-free (кожен третій однаковий товар безкоштовно) та --order percent-first|coupon-first. Програма застосовує знижки у вказаному порядку й виводить чек: товари, суми, кожну знижку, ПДВ 20 % у складі ціни та суму до сплати, яка не може бути від’ємною. Усі розрахунки виконуються в decimal; помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 15. Калорійність страви
1. Початковий рівень. Створити консольну програму, яка для порції вівсянки 250 г, що містить на 100 г 12,3 г білків, 6,1 г жирів і 59,5 г вуглеводів (значення задані в програмі), обчислює калорійність порції (4 ккал на 1 г білків і вуглеводів, 9 ккал на 1 г жирів) та частку калорій від білків, жирів і вуглеводів у відсотках.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача масу порції (г) і вміст білків, жирів і вуглеводів на 100 г продукту, перевіряє, що значення невід’ємні, а сума поживних речовин не перевищує 100 г, та виводить калорійність порції, масу кожної речовини в порції й частки калорій у відсотках (формат P1).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує інгредієнти страви у форматі назва:маса:білки:жири:вуглеводи (вміст на 100 г) та опції --portions і --goal (добова норма калорій). Програма виводить таблицю інгредієнтів з калорійністю, підсумок для всієї страви та однієї порції, частку порції від добової норми у відсотках і розподіл калорій за поживними речовинами. Некоректні інгредієнти повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 16. Ремонт кімнати
1. Початковий рівень. Створити консольну програму, яка для кімнати 4,2 × 3,6 м заввишки 2,7 м з вікном 1,5 × 1,4 м і дверима 0,9 × 2,05 м (значення задані в програмі) обчислює площу стін для обклеювання та кількість рулонів шпалер розміром 10,05 × 0,53 м, округлену вгору методом Math.Ceiling.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача довжину, ширину й висоту кімнати та сумарну площу вікон і дверей, перевіряє введені дані та виводить площу стелі й стін, кількість банок фарби для стелі у два шари (витрата 0,12 л/м², банка 2,5 л), кількість рулонів шпалер із запасом 10 % і вартість матеріалів у decimal.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає опції розмірів кімнати, --openings (перелік прорізів ширина×висота), --roll (розміри рулону), --repeat (крок повторення візерунка, см) і --price-roll, --price-paint. Програма обчислює кількість смуг з одного рулону з урахуванням підгонки візерунка (цілочисельне ділення), кількість рулонів і банок фарби, вартість кожної позиції та загальну суму й виводить кошторис таблицею. Некоректні опції відхиляються з повідомленням у потік помилок і кодом завершення 2; --help виводить довідку.
Варіант 17. Автономність павербанка
1. Початковий рівень. Створити консольну програму, яка для павербанка ємністю 20 000 мА·год при напрузі 3,7 В з КПД перетворення 85 % і смартфона з акумулятором 4 500 мА·год при 3,85 В (значення задані в програмі) обчислює енергію акумуляторів у Вт·год і кількість повних зарядок смартфона (ціла частина).
2. Базовий рівень. Створити консольну програму, яка запитує в користувача ємність павербанка (мА·год), напругу елементів (В), КПД (%) та ємність і напругу акумулятора пристрою, перевіряє введені дані та виводить енергію обох акумуляторів, кількість повних зарядок, залишок енергії після них у відсотках і відповідь, чи енергія павербанка не перевищує 100 Вт·год.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує пристрої у форматі назва:ємність:вольти:кількість і опції --bank (ємність і напруга, наприклад 20000@3,7), --efficiency і --input-power (потужність заряджання павербанка, Вт). Програма розподіляє енергію між пристроями по черзі, виводить таблицю «пристрій – енергія – повних зарядок – залишок», час заряджання самого павербанка у форматі гг:хх і попередження, якщо енергія перевищує 100 Вт·год. Помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 18. IP-адреса та маска підмережі
1. Початковий рівень. Створити консольну програму, яка перетворює IP-адресу 192.168.10.37 (чотири байти задані в програмі) на одне число типу uint за допомогою зсувів і побітового АБО та виводить його в десятковому, шістнадцятковому та двійковому записі.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача IP-адресу у форматі чотирьох чисел через крапку і довжину префікса (від 0 до 32), перевіряє введені дані, будує маску типу uint зсувом і виводить маску, адресу мережі (адреса & маска), широкомовну адресу (мережа | ~маска) та кількість адрес вузлів у мережі.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує мережі в нотації CIDR (10.0.0.0/8 192.168.1.130/26) і опцію --contains з IP-адресою. Для кожної мережі програма виводить таблицю «CIDR – мережа – маска – перша й остання адреса вузла – кількість вузлів (long)», позначає мережі, що містять задану адресу, і приватні діапазони (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). Префікси /31 і /32 обробляються окремо. Некоректні записи повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 19. Контрольна цифра штрихкоду
1. Початковий рівень. Створити консольну програму, яка для перших 12 цифр штрихкоду EAN-13 482012345678 (задане в програмі число типу long) виділяє цифри операціями / і %, обчислює контрольну цифру (сума цифр на непарних позиціях плюс потроєна сума цифр на парних позиціях, доповнена до найближчого кратного 10) та виводить повний код.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача 13-значний код EAN-13, перевіряє, що введено рівно 13 цифр, обчислює контрольну цифру за першими 12 цифрами та виводить, чи правильний код, очікувану контрольну цифру та префікс (перші три цифри; 482 – Україна).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який перевіряє та доповнює коди EAN-8, EAN-13 і UPC-A (12 цифр), передані аргументами. З опцією --complete коди без контрольної цифри доповнюються; опція --fix для коду з однією неправильною цифрою знаходить позиції, де заміна цифри робить код правильним. Програма виводить таблицю «код – тип – контрольна цифра – результат» і кількість правильних кодів. Некоректні записи повідомляються в потік помилок; коди завершення: 0 – усі коди правильні, 1 – є неправильні, 2 – помилка аргументів.
Варіант 20. Часові пояси
1. Початковий рівень. Створити консольну програму, яка для зустрічі о 17:30 за мадридським літнім часом (UTC+2, значення задані в програмі) переводить час у хвилини від початку доби та обчислює за допомогою / і % час зустрічі в Нью-Йорку (UTC−4) і Токіо (UTC+9) з позначкою зміни дня.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача час гг:хх і зміщення вихідного та цільового часових поясів відносно UTC у годинах (можливі дробові, наприклад 5,5), перевіряє введені дані та виводить час у цільовому поясі й позначку «попередній день», «той самий день» або «наступний день»; від’ємна остача виправляється виразом ((x % 1440) + 1440) % 1440.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає час --at гг:хх, вихідний пояс --from і перелік міст зі зміщеннями у форматі місто@зміщення (наприклад, Мадрид@+2 Лондон@+1 Делі@+5:30). Програма виводить таблицю «місто – зміщення – місцевий час – день» і, з опцією --work 09:00-18:00, позначає міста, де зустріч припадає на робочий час, та найближчий момент, коли робочий час збігається в усіх містах. Помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 21. Платна парковка
1. Початковий рівень. Створити консольну програму, яка для автомобіля, що стояв на парковці 3 год 17 хв за тарифу 25 грн за кожну розпочату годину (значення задані в програмі), обчислює кількість оплачуваних годин методом Math.Ceiling і вартість у decimal.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача час в’їзду та виїзду у форматі гг:хх (виїзд може бути наступного дня), перевіряє введені дані та обчислює вартість стоянки: перші 15 хвилин безкоштовно, далі 25 грн за кожну розпочату годину, але не більше 200 грн за добу; виводить тривалість і суму до сплати.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує стоянки у форматі номер@в’їзд@виїзд з датою й часом (наприклад, АА1234ВВ@2026-09-16T08:10@2026-09-17T09:05) і опції --rate, --free-minutes, --daily-cap та --night-rate (тариф з 22:00 до 07:00). Програма розбиває кожну стоянку на денні та нічні хвилини, обчислює вартість із добовим обмеженням і виводить таблицю «номер – тривалість – денні хвилини – нічні хвилини – сума» з підсумком. Записи з виїздом раніше за в’їзд відхиляються з повідомленням у потік помилок; --help виводить довідку.
Варіант 22. Швидкість звуку
1. Початковий рівень. Створити консольну програму, яка обчислює швидкість звуку в повітрі за температури 18 °C за формулою v = 331,3 + 0,606 · T м/с і відстань до блискавки, якщо грім почуто через 4,5 с після спалаху (значення задані в програмі).
2. Базовий рівень. Створити консольну програму, яка запитує в користувача температуру повітря (від −50 до 50 °C) і час між спалахом і громом у секундах, перевіряє введені дані та виводить швидкість звуку, відстань до блискавки в метрах і кілометрах та похибку наближеного правила «3 секунди – 1 кілометр».
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує спостереження грози у форматі гг:хх:сс@затримка і опцію --temp. Програма виводить таблицю «час – затримка – відстань – зміна відстані – швидкість руху грози (км/год)», визначає, наближається чи віддаляється гроза, і прогнозує, коли відстань стане меншою за 10 км. Опція --medium air|water|steel змінює середовище (швидкість звуку у воді 1 480 м/с, у сталі 5 960 м/с). Помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 23. Одиниці пам’яті
1. Початковий рівень. Створити консольну програму, яка для накопичувача розміром 512 ГБ за маркуванням виробника (109 байтів у гігабайті, значення задане в програмі) обчислює кількість байтів у типі long і виводить розмір у гібібайтах (230 байтів), який показує операційна система, та різницю у відсотках.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача розмір і одиницю (КБ, МБ, ГБ, ТБ, КіБ, МіБ, ГіБ, ТіБ), перевіряє введені дані, перетворює розмір на байти типу long у перевіреному контексті checked (для надто великого значення виводиться повідомлення про переповнення) та виводить розмір у всіх десяткових і двійкових одиницях.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який приймає розміри з одиницями (1.5TB 750GiB 64GB) та опції --to (одиниця виведення або auto), --block (розмір кластера файлової системи, байт) і --files (кількість файлів). Програма виводить таблицю «введено – байти – у заданих одиницях – кількість кластерів», оцінює втрати через неповні кластери (у середньому пів кластера на файл) і сумарний розмір. Переповнення long виявляється checked і повідомляється в потік помилок; коди завершення: 0, 1 (є помилки), 2 (помилка опцій); --help виводить довідку.
Варіант 24. Ухил дороги
1. Початковий рівень. Створити консольну програму, яка для дороги, що піднімається на 45 м на відрізку завдовжки 600 м по горизонталі (значення задані в програмі), обчислює та виводить ухил у відсотках, кут підйому в градусах (Math.Atan і переведення з радіанів) і запис ухилу у вигляді «1 : n».
2. Базовий рівень. Створити консольну програму, яка запитує в користувача ухил і форму його запису (%, deg або ratio для «1 : n»), перевіряє введені дані та виводить ухил в усіх трьох формах, перевищення висоти на 1 км шляху та відповідь, чи не перевищує ухил граничне значення, задане в програмі константою (наприклад, 8 %).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує профіль маршруту у форматі відстань@висота (контрольні точки, м) і опції --max-grade та --mass (маса велосипедиста з велосипедом, кг). Програма виводить таблицю ділянок «довжина – перепад – ухил, % – кут – робота проти сили тяжіння, кДж», сумарний набір і втрату висоти, найкрутішу ділянку та позначає ділянки з ухилом понад допустимий. Помилки введення (відстань не зростає) виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 25. Масштабування рецепта
1. Початковий рівень. Створити консольну програму, яка перераховує рецепт млинців на 4 порції (борошно 250 г, молоко 500 мл, яйця 2 шт., цукор 30 г, сіль 2 г) на 7 порцій (значення задані в програмі) та виводить кількість кожного інгредієнта, округлюючи грами й мілілітри до цілих, а яйця – вгору до цілої кількості.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача кількість порцій у рецепті та бажану кількість порцій, перевіряє введені дані та виводить коефіцієнт масштабування й таблицю інгредієнтів рецепта, заданого в програмі, з новими кількостями: сипкі інгредієнти округлюються до 5 г, рідини – до 10 мл, штучні – вгору до цілого.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує інгредієнти у форматі назва:кількість:одиниця (г, кг, мл, л, шт, чл, стл) та опції --from, --to (порції) і --system metric|us (переведення в унції та чашки). Програма нормалізує одиниці, масштабує кількості, обирає зручну одиницю виведення (наприклад, 1 250 г → 1,25 кг) і виводить таблицю з округленням за типом одиниці. Невідомі одиниці повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 26. Рейтинг студента
1. Початковий рівень. Створити консольну програму, яка для трьох дисциплін з оцінками 92, 78 і 85 балів та обсягом 5, 4 і 3 кредити ЄКТС (значення задані в програмі) обчислює та виводить середньозважений бал з двома знаками після коми та середній бал без урахування кредитів.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача оцінки (0–100) і кількість кредитів для чотирьох дисциплін, перевіряє введені дані та виводить середньозважений бал, його значення за національною шкалою (90–100 – «відмінно», 71–89 – «добре», 50–70 – «задовільно», менше 50 – «незадовільно») і загальну кількість кредитів, за які отримано позитивну оцінку.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує результати у форматі дисципліна:бали:кредити та опції --scale national|ects|all і --round ToEven|AwayFromZero. Програма виводить таблицю «дисципліна – бали – кредити – оцінка ЄКТС (A–F) – національна оцінка», середньозважений бал з вибраним режимом округлення, частку кредитів з оцінками A і B та кількість академічних заборгованостей. Некоректні записи повідомляються в потік помилок; коди завершення: 0 – заборгованостей немає, 1 – є заборгованості, 2 – помилка аргументів.
Варіант 27. Тиск у шинах
1. Початковий рівень. Створити консольну програму, яка переводить рекомендований тиск у шинах 2,3 бар (значення задане в програмі) у кілопаскалі (1 бар = 100 кПа) і фунти на квадратний дюйм (1 psi = 6,894757 кПа) та виводить результати з одним знаком після коми.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача рекомендований тиск, одиницю (bar, kPa, psi) і виміряний тиск кожної з чотирьох шин у тій самій одиниці, перевіряє введені дані та виводить відхилення кожної шини від норми у відсотках і позначку «норма», якщо відхилення не більше 5 %, інакше «підкачати» або «спустити».
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує виміри у форматі колесо@тиск@температура (наприклад, FL@32,5psi@5) та опції --target (рекомендований тиск з одиницею для 20 °C) і --units. Програма зводить тиск до 20 °C за законом Гей-Люссака (температура в кельвінах, абсолютний тиск дорівнює надлишковому плюс 101,325 кПа), виводить таблицю «колесо – виміряно – приведено до 20 °C – відхилення» і різницю тиску між лівими та правими колесами. Помилки введення виводяться в потік помилок з кодом завершення 2; --help виводить довідку.
Варіант 28. Вік у днях
1. Початковий рівень. Створити консольну програму, яка для дати народження 29 лютого 2008 року (значення задане в програмі) обчислює за допомогою DateTime і TimeSpan вік у повних днях, тижнях і годинах на поточну дату та виводить день тижня народження.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача дату народження у форматі дд.ММ.рррр, перевіряє, що дата коректна й не пізніша за поточну, та виводить вік у повних роках, днях і годинах, кількість днів до наступного дня народження (для 29 лютого в невисокосний рік – до 1 березня) і дату, коли людині виповниться 10 000 днів.
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує людей у форматі ім’я@дд.ММ.рррр і опцію --on дд.ММ.рррр (дата розрахунку, за замовчуванням сьогодні). Програма виводить таблицю «ім’я – вік (роки, місяці, дні) – днів прожито – наступний день народження – днів до нього», різницю у віці між найстаршим і наймолодшим у днях та для кожної людини дату найближчого ювілею в днях, кратного 1000. Некоректні дати повідомляються в потік помилок; коди завершення: 0, 1 (частину записів відхилено), 2 (помилка опцій).
Варіант 29. Координати GPS
1. Початковий рівень. Створити консольну програму, яка переводить координати 50°50′48″ пн. ш. і 4°21′06″ сх. д. (значення задані в програмі) у десяткові градуси та обчислює відстань до точки 48,8566° пн. ш., 2,3522° сх. д. за формулою гаверсинусів (радіус Землі 6 371 км).
2. Базовий рівень. Створити консольну програму, яка запитує в користувача координату в десяткових градусах і її тип (lat або lon), перевіряє діапазон (±90 або ±180) та виводить її у форматі градусів, хвилин і секунд з одним знаком після коми та літерою півкулі (N/S або E/W), виділяючи цілі частини явним приведенням (int).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує маршрут як послідовність точок у форматі широта,довгота в десяткових градусах або у форматі 47°54'36"N/33°23'28"E і опцію --units km|mi|nmi. Програма виводить таблицю «точка – координати – відстань від попередньої – азимут – накопичена відстань», загальну довжину маршруту та відстань між першою й останньою точками. Некоректні координати повідомляються в потік помилок; коди завершення: 0, 1 (частину точок відхилено), 2 (помилка опцій); --help виводить довідку.
Варіант 30. Бюджет подорожі
1. Початковий рівень. Створити консольну програму, яка для подорожі на 6 днів із добовими витратами 85 євро на проживання, 40 євро на харчування й 15 євро на транспорт за курсу 45,20 грн за євро (значення задані в програмі) обчислює в decimal загальні витрати в євро та гривнях і частку кожної статті у відсотках.
2. Базовий рівень. Створити консольну програму, яка запитує в користувача кількість днів, добові витрати на проживання, харчування та транспорт у валюті країни, курс валюти до гривні і наявний бюджет у гривнях, перевіряє введені дані та виводить загальні витрати, залишок або нестачу бюджету й максимальну кількість днів, на яку вистачить бюджету (цілочисельне ділення).
3. Високий рівень. Створити за допомогою dotnet CLI консольний застосунок із методом Main, який отримує статті витрат у форматі назва:сума:валюта:періодичність (once або daily, наприклад квитки:7400:UAH:once готель:85:EUR:daily) та опції --days, --budget і --rates EUR=45,20;PLN=10,60. Програма перераховує всі суми в гривні в decimal, виводить таблицю статей з частками, підсумок, резерв 10 % і залишок бюджету, а в разі нестачі – на скільки відсотків потрібно скоротити щоденні витрати. Невідомі валюти повідомляються в потік помилок з кодом завершення 2; --help виводить довідку.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Для кожної величини свого варіанта обрати тип даних (
int,long,double,decimal,bool,char,string) і пояснити вибір; сталі значення оголосити константамиconst. - Створити рішення та проєкт для свого варіанта завдання; переконатися, що у файлі
.csprojувімкнено<Nullable>enable</Nullable>. - Реалізувати програму відповідно до обраного рівня складності, перевіряючи введені дані методами
TryParse. - Зібрати проєкт без попереджень компілятора та перевірити роботу програми на коректних, некоректних і граничних даних (нуль, від’ємні значення, дуже великі числа).
- Продемонструвати роботу програми викладачеві, пояснити програмний код і відповісти на контрольні питання.