Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Варіанти
Варіант 1. Бюджет родини
1. Початковий рівень. Створити клас Expense з автовластивостями Category, Amount і Date та конструктором з перевіркою, що сума додатна. У консольній програмі створити масив із шести витрат і вивести їх таблицею та загальну суму.
2. Базовий рівень. Створити клас FamilyBudget з приватним масивом витрат, властивістю MonthlyLimit з перевіркою, методами AddExpense, TotalByCategory(string category) і обчислюваними властивостями Total та Remaining. Консольна програма в меню додає витрати, виводить підсумки за категоріями й попереджає, якщо ліміт перевищено.
3. Високий рівень. Створити класи Transaction (дохід або витрата, дата, категорія, коментар) і Budget з перевантаженими конструкторами, методами звітів за місяць і категорією та методом ToString. Консольний застосунок dotnet CLI зчитує операції зі стандартного введення у форматі CSV, будує звіт за місяцями з балансом і відсотками категорій та виводить некоректні рядки в Console.Error; коди завершення: 0, 1, 2.
Варіант 2. Бібліотечна книга
1. Початковий рівень. Створити клас LibraryBook з властивостями Title, Author, InventoryNumber (init) і IsAvailable та методами Lend() і Return(), які генерують InvalidOperationException у разі повторної видачі чи повернення. Продемонструвати роботу з двома книгами.
2. Базовий рівень. Створити клас LibraryBook з історією видач (масив прізвищ читачів), властивістю DueDate і методами Lend(string reader, int days = 14), Return(DateTime date), який повертає суму штрафу за прострочення (5 грн за день). Консольна програма керує масивом книг у меню: пошук за автором, видача, повернення, перелік прострочених книг.
3. Високий рівень. Створити класи LibraryBook і Reader (ліміт одночасно виданих книг залежить від типу читача, заданого в конструкторі) з перевіркою всіх операцій. Консольний застосунок dotnet CLI обробляє журнал операцій зі стандартного введення (lend, return, renew), виводить стан фонду, боржників із сумами штрафів і некоректні операції в Console.Error; коди завершення: 0, 1, 2.
Варіант 3. Студент
1. Початковий рівень. Створити клас Student з властивостями FullName (не порожня), Group і масивом оцінок, конструктором і обчислюваною властивістю Average. Створити трьох студентів і вивести їх середні бали.
2. Базовий рівень. Створити клас Student з методом AddGrade(int grade) (оцінка 0–100, ліміт 20 оцінок), властивостями Average, HasDebts (є оцінки менші за 50) і методом Scholarship(), що повертає розмір стипендії за правилами, заданими константами. Консольна програма зчитує групу, виводить таблицю студентів і рейтинг за середнім балом.
3. Високий рівень. Створити класи Student, Subject і Group (масив студентів, методи пошуку, сортування за середнім балом і статистики за предметами) з перевіркою даних у конструкторах і властивостях. Застосунок dotnet CLI завантажує відомість зі стандартного введення (прізвище;предмет;оцінка), виводить зведену таблицю студенти × предмети, рейтинг і список боржників; некоректні рядки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 4. Автомобіль
1. Початковий рівень. Створити клас Car з властивостями Model, FuelCapacity, FuelLevel (перевірка: 0…FuelCapacity) і Mileage та методом Drive(double km, double consumption), який зменшує пальне та збільшує пробіг. Продемонструвати поїздки й дозаправку.
2. Базовий рівень. Створити клас Car із конструкторами (модель; модель і місткість бака), методами Refuel(double liters), Drive(double km) (витрата л/100 км у властивості; якщо пального не вистачає, автомобіль проїжджає можливу відстань і метод повертає її) та обчислюваною властивістю Range. Консольна програма моделює маршрут із кількох ділянок і заправок.
3. Високий рівень. Створити класи Car і Trip (ділянки маршруту з відстанню та типом дороги, що змінює витрату) з перевіркою значень і методом ToString. Застосунок dotnet CLI обробляє журнал поїздок зі стандартного введення, планує заправки так, щоб рівень пального не падав нижче --reserve, і виводить таблицю ділянок, заправок, вартості пального та загальну статистику; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 5. Термостат
1. Початковий рівень. Створити клас Thermostat з властивістю TargetTemperature (перевірка 5–30 °C), властивістю CurrentTemperature і методом Update(), який повертає режим "нагрів", "охолодження" або "очікування". Продемонструвати зміну цілі та поточної температури.
2. Базовий рівень. Створити клас Thermostat з режимами «комфорт», «економ», «ніч» (цільова температура для кожного задається в конструкторі), гістерезисом 0,5 °C і методом Step(double outdoorTemperature), що змінює поточну температуру залежно від стану нагрівача. Консольна програма моделює добу погодинно й виводить таблицю станів і кількість годин роботи нагрівача.
3. Високий рівень. Створити класи Thermostat, Schedule (розклад режимів за годинами) і Room (теплові втрати залежать від площі та утеплення, задаються в конструкторі). Застосунок dotnet CLI моделює тиждень з кроком --step хвилин за температурами вулиці зі стандартного введення, виводить енергоспоживання, середнє відхилення від цілі та години дискомфорту; помилки даних – у Console.Error; коди завершення: 0, 1, 2.
Варіант 6. Кавоварка
1. Початковий рівень. Створити клас CoffeeMachine з властивостями запасу води (мл) і кави (г) з перевіркою ємностей та методом MakeEspresso(), що витрачає 30 мл води й 8 г кави або генерує InvalidOperationException за нестачі. Приготувати кілька порцій.
2. Базовий рівень. Створити клас CoffeeMachine з методами Refill(int water, int coffee), Make(string drink) для еспресо, американо й капучино (рецепти задано в класі), лічильником порцій до очищення (після 10 порцій приготування заборонене до виклику Clean()) і властивістю Status. Консольна програма реалізує меню кавоварки.
3. Високий рівень. Створити класи CoffeeMachine, Recipe і Order (напій, розмір, кількість, додатковий цукор) з перевантаженими конструкторами. Застосунок dotnet CLI обробляє чергу замовлень зі стандартного введення, виконує автоматичне поповнення з опцією --auto-refill, виводить журнал, виручку та витрату інгредієнтів, а невиконані замовлення – у Console.Error; коди завершення: 0, 1, 2.
Варіант 7. Список завдань
1. Початковий рівень. Створити клас TaskItem з властивостями Title (не порожній, init), Priority (1–3), IsDone і методом Complete(). Створити масив із п’яти завдань, позначити два виконаними та вивести список із позначками [x] і [ ].
2. Базовий рівень. Створити клас TaskItem з датою створення, терміном виконання, обчислюваною властивістю IsOverdue і методом ToString, та клас TaskList з методами додавання, видалення за номером, позначення виконаним і виведення за пріоритетом. Консольна програма реалізує меню керування списком завдань.
3. Високий рівень. Створити класи TaskItem, TaskList і Tag (мітки завдання) з перевіркою всіх значень. Застосунок dotnet CLI виконує команди з аргументів (add, done, list --tag робота --overdue, stats) над списком, збереженим у текстовому файлі у форматі рядків із роздільниками; помилки команд і пошкоджені рядки файлу – у Console.Error; коди завершення: 0, 1, 2.
Варіант 8. Музичний плейлист
1. Початковий рівень. Створити клас Track з властивостями Artist, Title і Duration (секунди, додатні) та методом ToString у форматі Виконавець – Назва (м:сс). Створити масив треків і вивести їх і загальну тривалість.
2. Базовий рівень. Створити клас Playlist з назвою, приватним масивом треків, методами Add, Remove, FindByArtist і Shuffle(int seed) (перемішування Фішера – Єйтса) та обчислюваною властивістю TotalDuration. Консольна програма формує плейлист і виводить його до та після перемішування.
3. Високий рівень. Створити класи Track, Playlist і Player (поточний трек, позиція, режими повтору й перемішування, методи Next, Previous, Seek). Застосунок dotnet CLI завантажує плейлист зі стандартного введення, виконує сценарій команд з аргументів і виводить журнал відтворення та статистику прослуховувань; некоректні команди – у Console.Error.
Варіант 9. Раціональний дріб
1. Початковий рівень. Створити клас Fraction з конструктором, що перевіряє знаменник (не нуль), скорочує дріб і переносить знак у чисельник, властивостями Numerator, Denominator і методом ToString. Створити кілька дробів і вивести їх у скороченому вигляді.
2. Базовий рівень. Створити незмінний клас Fraction з методами Add, Subtract, Multiply, Divide, які повертають нові дроби, методом CompareTo(Fraction other) і властивістю Value типу double. Консольна програма обчислює суму й добуток дробів, введених рядком, і виводить їх у порядку зростання.
3. Високий рівень. Створити клас Fraction з перевантаженими конструкторами (ціле число, чисельник і знаменник, рядок a/b або десятковий дріб 0,125), статичним методом TryParse і перевіркою переповнення в checked. Застосунок dotnet CLI обчислює вирази з дробами з аргументів із пріоритетом операцій і виводить результат дробом, мішаним числом і десятковим дробом; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 10. Смартфон
1. Початковий рівень. Створити клас Smartphone з властивостями Model, BatteryLevel (0–100, перевірка) і методами Call(int minutes) (1 % заряду за хвилину) та Charge(int minutes) (2 % за хвилину). Продемонструвати дзвінки й заряджання.
2. Базовий рівень. Створити клас Smartphone з журналом подій (масив рядків), енергоспоживанням для дзвінків, відео й режиму очікування, режимом енергозбереження, що вмикається автоматично при заряді менше 20 %, і методом Report(). Консольна програма моделює день використання за введеним сценарієм.
3. Високий рівень. Створити класи Smartphone, Battery (ємність, деградація після кожного циклу заряджання) і App (споживання енергії). Застосунок dotnet CLI моделює використання протягом --days днів за сценарієм зі стандартного введення, виводить графік заряду з символів, кількість циклів і залишкову ємність батареї; помилки сценарію – у Console.Error.
Варіант 11. Рецепт
1. Початковий рівень. Створити клас Ingredient з властивостями Name, Amount (додатне) і Unit та клас Recipe з назвою, кількістю порцій і масивом інгредієнтів. Створити рецепт і вивести його перелік інгредієнтів.
2. Базовий рівень. Створити клас Recipe з методом Scale(int portions), який повертає новий рецепт з перерахованими кількостями, обчислюваною властивістю Calories (калорійність кожного інгредієнта на 100 г задана в класі Ingredient) і методом ToString. Консольна програма виводить рецепт для введеної кількості порцій і калорійність однієї порції.
3. Високий рівень. Створити класи Ingredient, Recipe і ShoppingList (об’єднання інгредієнтів кількох рецептів з переведенням одиниць г/кг, мл/л). Застосунок dotnet CLI завантажує рецепти зі стандартного введення, будує список покупок для меню з аргументів (борщ:6 вареники:4) і виводить підсумкову таблицю; невідомі рецепти й одиниці – у Console.Error; коди завершення: 0, 1, 2.
Варіант 12. Спортивна команда
1. Початковий рівень. Створити клас Player з властивостями Name, Number (1–99), Goals і методом ScoreGoal(). Створити масив гравців, зарахувати кілька голів і вивести найкращого бомбардира.
2. Базовий рівень. Створити клас Team з назвою, масивом гравців, методами AddPlayer (номери унікальні), RecordMatch(int scored, int conceded) і властивостями Points, GoalDifference, MatchesPlayed. Консольна програма вводить результати матчів і виводить статистику команди та список гравців.
3. Високий рівень. Створити класи Player, Team, Match і League з перевіркою даних. Застосунок dotnet CLI обробляє протоколи матчів зі стандартного введення (рахунок, автори голів з хвилинами), будує турнірну таблицю, список бомбардирів і статистику гравців, виявляє суперечності (гол гравця іншої команди) і виводить їх у Console.Error; коди завершення: 0, 1, 2.
Варіант 13. Фітнес-трекер
1. Початковий рівень. Створити клас FitnessTracker з властивостями Steps, DailyGoal (перевірка 1000–50000) і методом AddSteps(int steps) та обчислюваними властивостями DistanceKm (довжина кроку задана в конструкторі) і GoalProgress у відсотках.
2. Базовий рівень. Створити клас FitnessTracker з профілем користувача (зріст, вага, передані в конструктор), методами AddWalk, AddRun і властивістю Calories, що обчислюється за типом активності та вагою, і методом DailySummary(). Консольна програма вводить активності за день і виводить підсумок.
3. Високий рівень. Створити класи UserProfile, Activity і FitnessTracker з історією за кілька днів. Застосунок dotnet CLI обробляє журнал активностей зі стандартного введення, обчислює денні підсумки, серії днів з досягнутою метою, тижневий звіт і графік кроків із символів; некоректні записи – у Console.Error; коди завершення: 0, 1, 2.
Варіант 14. Готельний номер
1. Початковий рівень. Створити клас HotelRoom з властивостями Number, Capacity, PricePerNight (додатна) і IsOccupied та методами CheckIn(int guests) і CheckOut() з перевіркою місткості й стану номера.
2. Базовий рівень. Створити клас HotelRoom з масивом бронювань (дата заїзду, кількість ночей), методом IsAvailable(DateTime from, int nights), методом Book та обчислюваною вартістю проживання зі знижкою 10 % від 7 ночей. Консольна програма керує номерами готелю в меню.
3. Високий рівень. Створити класи HotelRoom, Booking і Hotel з пошуком вільних номерів за датами й кількістю гостей. Застосунок dotnet CLI обробляє запити бронювання зі стандартного введення, пропонує найдешевший придатний номер, виводить завантаженість за днями та виручку; відхилені запити – у Console.Error; коди завершення: 0, 1, 2.
Варіант 15. Оренда авто
1. Початковий рівень. Створити клас RentalCar з властивостями Model, DailyRate, IsRented і методами Rent() та Return(int days, int km), який повертає вартість оренди (ліміт 200 км на день, перевищення – 3 грн/км).
2. Базовий рівень. Створити клас RentalAgreement з автомобілем, датами початку й кінця, пробігом на початку і конструкторами з перевіркою дат, методом Close(DateTime returnDate, int mileage) з розрахунком доплат за прострочення й перепробіг та методом ToString для договору. Консольна програма оформлює договір і розраховує оплату.
3. Високий рівень. Створити класи RentalCar, Customer і RentalAgreement з перевіркою віку й стажу водія. Застосунок dotnet CLI обробляє журнал оренд зі стандартного введення, розраховує вартість із сезонними коефіцієнтами з опції --seasons, виводить звіт завантаженості автопарку та виручку; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 16. Віртуальний вихованець
1. Початковий рівень. Створити клас Pet з властивостями Name, Hunger, Happiness і Energy (0–100, значення обмежуються межами) та методами Feed(), Play(), Sleep(). Продемонструвати кілька дій і вивести стан вихованця.
2. Базовий рівень. Створити клас Pet з методом PassTime(int hours), який погіршує показники з часом, обчислюваною властивістю Mood (текстовий опис) і перевіркою, що змучений вихованець не може гратися. Консольна програма реалізує ігровий цикл із меню дій, доки вихованець «задоволений».
3. Високий рівень. Створити класи Pet, Species (параметри швидкості зміни показників) і Game (кілька вихованців, рахунок, досягнення). Застосунок dotnet CLI виконує сценарій дій зі стандартного введення або інтерактивну гру (--interactive), виводить журнал і фінальний рахунок; некоректні дії – у Console.Error.
Варіант 17. Робот-пилосос
1. Початковий рівень. Створити клас RobotVacuum з властивостями X, Y, Battery і методом Move(char direction), що змінює позицію в межах кімнати (розміри задано в конструкторі) і витрачає 1 % заряду. Виконати маршрут RRDDLU.
2. Базовий рівень. Створити клас RobotVacuum з картою кімнати (масив bool[,] прибраних клітинок), перешкодами, методом Clean(string route), що повертає кількість прибраних клітинок, і поверненням на базу при заряді менше 15 %. Консольна програма виводить карту після прибирання.
3. Високий рівень. Створити класи Room, RobotVacuum і CleaningReport. Застосунок dotnet CLI завантажує план кімнати зі стандартного введення, будує маршрут «змійкою» з обходом перешкод, моделює прибирання з поверненнями на заряджання та виводить карту, відсоток прибраної площі й час; помилки плану – у Console.Error; коди завершення: 0, 1, 2.
Варіант 18. Посилка
1. Початковий рівень. Створити клас Parcel з властивостями TrackingNumber (init), Weight (0,1–30 кг), Length, Width, Height і обчислюваною властивістю VolumetricWeight (об’єм у см³ / 4000). Створити кілька посилок і вивести їх характеристики.
2. Базовий рівень. Створити клас Parcel з історією статусів (масив записів «дата – статус»), методом ChangeStatus(string status) з перевіркою допустимого порядку статусів і методом Cost(decimal ratePerKg) за більшою з фактичної та об’ємної ваги. Консольна програма відстежує посилку за командами.
3. Високий рівень. Створити класи Parcel, Address і DeliveryService з тарифами за зонами. Застосунок dotnet CLI обробляє події відстеження посилок зі стандартного введення, виявляє неможливі переходи статусів, обчислює вартість і термін доставки та виводить звіт за посилками; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 19. Комплексне число
1. Початковий рівень. Створити клас Complex з властивостями Re, Im, обчислюваними властивостями Modulus і Argument (у радіанах) та методом ToString у форматі a + bi. Створити кілька чисел і вивести їх модулі.
2. Базовий рівень. Створити незмінний клас Complex з методами Add, Multiply, Divide (ділення на нуль – виняток), Conjugate і статичним методом FromPolar(double r, double phi). Консольна програма розв’язує квадратне рівняння з від’ємним дискримінантом і перевіряє корені підстановкою.
3. Високий рівень. Створити клас Complex з перевантаженими конструкторами, методами Pow(int n) (формула Муавра), Roots(int n) (усі корені n-го степеня) і статичним TryParse для записів 3-4i, 2i, -5. Застосунок dotnet CLI обчислює вирази з комплексними числами з аргументів і виводить результати в алгебраїчній і тригонометричній формах; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 20. GPS-трек
1. Початковий рівень. Створити клас TrackPoint з властивостями Latitude (−90…90), Longitude (−180…180) і Time та методом DistanceTo(TrackPoint other) за формулою гаверсинусів. Обчислити відстань між двома точками.
2. Базовий рівень. Створити клас GpsTrack з масивом точок, методом AddPoint (час має зростати), обчислюваними властивостями TotalDistance, Duration і AverageSpeed та методом MaxSpeedSegment(). Консольна програма зчитує точки й виводить характеристики треку.
3. Високий рівень. Створити класи TrackPoint, GpsTrack і Segment. Застосунок dotnet CLI зчитує трек зі стандартного введення, відфільтровує викиди (швидкість між точками більша за --max-speed), визначає зупинки (швидкість менша за 1 км/год довше --stop хвилин), виводить таблицю відрізків руху й загальну статистику; відкинуті точки – у Console.Error.
Варіант 21. Електронний квиток
1. Початковий рівень. Створити клас Ticket з властивостями Route, Seat, ValidFrom і ValidTo (перевірка: кінець після початку) та методом IsValid(DateTime moment). Створити квиток і перевірити його для кількох моментів часу.
2. Базовий рівень. Створити клас Ticket з унікальним кодом (генерується в конструкторі), кількістю поїздок, методом Validate(DateTime moment), що зменшує кількість поїздок і генерує винятки для простроченого чи використаного квитка, та журналом валідацій. Консольна програма моделює перевірку контролером.
3. Високий рівень. Створити класи Ticket, Passenger (пільги) і Validator (транспорт, маршрут). Застосунок dotnet CLI обробляє журнал валідацій зі стандартного введення, виявляє спроби повторного використання, поїздки не тим маршрутом і прострочені квитки, виводить звіт порушень і статистику поїздок; помилки даних – у Console.Error; коди завершення: 0, 1, 2.
Варіант 22. Абонемент у спортзал
1. Початковий рівень. Створити клас Membership з властивостями Owner, StartDate, DurationDays і методом IsActive(DateTime date). Створити абонемент і перевірити його активність для кількох дат.
2. Базовий рівень. Створити клас Membership з лімітом відвідувань, методом Visit(DateTime date), методом Freeze(int days) (не більше 30 днів сумарно, продовжує термін дії) і обчислюваною властивістю EndDate. Консольна програма реєструє відвідування й виводить стан абонемента.
3. Високий рівень. Створити класи Membership, Plan (тип абонемента з цінами й обмеженнями часу відвідування) і Gym. Застосунок dotnet CLI обробляє журнал відвідувань зі стандартного введення, відхиляє відвідування поза дозволеним часом, розраховує завантаженість залу за годинами й виручку; відхилення – у Console.Error; коди завершення: 0, 1, 2.
Варіант 23. Кімнатна рослина
1. Початковий рівень. Створити клас Plant з властивостями Name, WaterIntervalDays, LastWatered і методами Water(DateTime date) та NeedsWater(DateTime today). Перевірити рослину для кількох дат.
2. Базовий рівень. Створити клас Plant з вологістю ґрунту (0–100), методом PassDays(int days) (вологість зменшується залежно від виду), методом Water(int ml) з обмеженням переливу та властивістю Health. Консольна програма моделює догляд за кількома рослинами протягом місяця.
3. Високий рівень. Створити класи Plant, Species і CareSchedule. Застосунок dotnet CLI будує календар догляду (полив, підживлення, пересаджування) на --days днів для рослин зі стандартного введення, моделює пропущені поливи з опції --skip і виводить календар та стан рослин; помилки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 24. Вектор у просторі
1. Початковий рівень. Створити клас Vector3 з властивостями X, Y, Z, обчислюваною властивістю Length і методом ToString. Створити кілька векторів і вивести їх довжини.
2. Базовий рівень. Створити незмінний клас Vector3 з методами Add, Scale, Dot (скалярний добуток), Cross (векторний добуток), Normalize (для нульового вектора – виняток) і AngleTo. Консольна програма обчислює площу трикутника та кут між сторонами за координатами вершин.
3. Високий рівень. Створити класи Vector3 і Plane (площина через три точки) з методами відстані від точки до площини, проєкції та перетину прямої з площиною. Застосунок dotnet CLI виконує геометричні запити з аргументів і виводить результати із заданою кількістю знаків; вироджені випадки – у Console.Error; коди завершення: 0, 1, 2.
Варіант 25. Шаховий годинник
1. Початковий рівень. Створити клас ChessClock з часом кожного гравця (хвилини, задані в конструкторі), властивістю ActivePlayer і методом Switch(int secondsSpent), що віднімає час поточного гравця й передає хід. Змоделювати кілька ходів.
2. Базовий рівень. Створити клас ChessClock з інкрементом (додаткові секунди за хід), методом IsFlagFallen(), лічильником ходів і форматуванням часу м:сс. Консольна програма вводить час кожного ходу й завершує партію, коли в гравця закінчився час.
3. Високий рівень. Створити класи ChessClock, TimeControl (контроль часу з додаванням часу після N-го ходу) і GameRecord. Застосунок dotnet CLI обробляє запис партії зі стандартного введення (ходи з витраченим часом), виявляє порушення контролю часу, виводить таблицю ходів із залишком часу й статистику використання часу гравцями.
Варіант 26. Календарна подія
1. Початковий рівень. Створити клас CalendarEvent з властивостями Title, Start і Duration (додатна) та обчислюваною властивістю End. Створити дві події та вивести їх початок і кінець.
2. Базовий рівень. Створити клас CalendarEvent з методом OverlapsWith(CalendarEvent other), методом Move(TimeSpan delta) і властивістю IsAllDay, та клас DaySchedule з масивом подій і методом Add, що відхиляє події, які перетинаються. Консольна програма формує розклад дня й виводить вільні проміжки.
3. Високий рівень. Створити класи CalendarEvent, Recurrence (щодня, щотижня за днями, щомісяця) і Calendar. Застосунок dotnet CLI розгортає повторювані події на період --from/--to, знаходить конфлікти й найближчий вільний проміжок заданої тривалості для зустрічі; помилки даних – у Console.Error; коди завершення: 0, 1, 2.
Варіант 27. Акваріум
1. Початковий рівень. Створити клас Aquarium з властивостями Volume (л), Temperature (перевірка 18–32 °C) і FishCount та методом AddFish(int count), який не дозволяє перевищити одну рибку на 10 л. Продемонструвати додавання риб.
2. Базовий рівень. Створити класи Fish (вид, довжина, діапазон температур) і Aquarium з масивом риб, методом перевірки сумісності температур, методом Feed() і показником чистоти води, що погіршується щодня. Консольна програма моделює тиждень догляду з меню дій.
3. Високий рівень. Створити класи Fish, Aquarium і MaintenanceLog. Застосунок dotnet CLI моделює акваріум за журналом подій зі стандартного введення (додавання риб, годування, заміна води, зміна температури), попереджає про несумісність і забруднення, виводить журнал і підсумковий стан; некоректні події – у Console.Error.
Варіант 28. Профіль гравця
1. Початковий рівень. Створити клас PlayerProfile з властивостями Nickname (3–16 символів), Level і Experience та методом AddExperience(int xp), що підвищує рівень кожні 1000 очок досвіду. Продемонструвати набір досвіду.
2. Базовий рівень. Створити клас PlayerProfile з досягненнями (масив рядків без повторів), зростаючим порогом досвіду для кожного рівня, методом WinMatch() і властивістю WinRate. Консольна програма вводить результати матчів кількох гравців і виводить таблицю лідерів.
3. Високий рівень. Створити класи PlayerProfile, Achievement (умова отримання) і Leaderboard з рейтингом Ело. Застосунок dotnet CLI обробляє результати матчів зі стандартного введення, оновлює рейтинги, присвоює досягнення й виводить таблицю лідерів і журнал змін; некоректні матчі – у Console.Error; коди завершення: 0, 1, 2.
Варіант 29. Бойлер
1. Початковий рівень. Створити клас WaterHeater з властивостями VolumeLiters, PowerWatts (додатні) і WaterTemperature та методом HeatingMinutes(double targetTemperature), що обчислює час нагрівання за формулою Q = c · m · Δ T (c = 4186 Дж/(кг·°C)).
2. Базовий рівень. Створити клас WaterHeater з методами Heat(int minutes) і DrawWater(double liters, double coldWaterTemperature) (змішування води змінює температуру), термостатом із цільовою температурою та лічильником витраченої енергії. Консольна програма моделює ранок сім’ї (душ, посуд) і виводить температуру й енергію.
3. Високий рівень. Створити класи WaterHeater, Tariff (двозонний тариф) і UsagePlan. Застосунок dotnet CLI моделює добу з кроком 1 хвилина за розкладом водоспоживання зі стандартного введення, порівнює стратегії нагріву (постійно, лише вночі, перед використанням) за вартістю й комфортом і виводить таблицю порівняння; помилки – у Console.Error.
Варіант 30. Прокат велосипедів
1. Початковий рівень. Створити клас Bike з властивостями Id, Type і IsAvailable та методами Rent() і Return(int minutes), що повертає вартість (перші 30 хвилин – 40 грн, далі 2 грн за хвилину).
2. Базовий рівень. Створити класи Bike і RentalStation (масив велосипедів, місткість станції, методи видачі та повернення з перевіркою вільних місць) з тарифами за типом велосипеда. Консольна програма моделює роботу станції за командами й виводить виручку.
3. Високий рівень. Створити класи Bike, RentalStation і RentalNetwork (кілька станцій, повернення на будь-яку станцію). Застосунок dotnet CLI обробляє журнал поїздок зі стандартного введення, відхиляє повернення на заповнену станцію, пропонує перерозподіл велосипедів між станціями й виводить звіт; помилки – у Console.Error; коди завершення: 0, 1, 2.
Порядок виконання та захисту роботи
- Опрацювати теоретичні відомості та приклади розв’язання завдань.
- Побудувати UML-діаграму класу (або класів) свого варіанта: поля, властивості з методами доступу, конструктори й методи; визначити, які значення кожна властивість вважає коректними.
- Створити рішення та проєкт; кожен клас розмістити в окремому файлі (Project → Add Class…).
- Реалізувати класи відповідно до обраного рівня складності: приватні поля, властивості з перевіркою, перевантажені конструктори з ланцюжком
this(…), методToString. - Перевірити створення об’єктів із коректними та некоректними даними; переглянути стан об’єктів у вікні Locals.
- Продемонструвати роботу програми викладачеві, пояснити програмний код і відповісти на контрольні питання.