Українська
Завдання
Відповідно до номера свого варіанта виконайте завдання обраного рівня складності.
Для всіх рівнів подайте UML класів із видимістю полів, конструкторами й методами. Модель не читає консоль; інтерфейс перетворює рядки та обробляє відмови.
Варіанти
Варіант 1. Банківська картка
1. Початковий рівень. Створити консольну програму Java: ввести номер із 16 цифр, залишок 0..1000000 копійок і суму списання; клас Card приховує залишок, списує тільки додатну доступну суму й показує маску номера та новий залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести номер із 16 цифр, залишок 0..1000000 копійок і суму списання; клас Card приховує залишок, списує тільки додатну доступну суму й показує маску номера та новий залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести номер із 16 цифр, залишок 0..1000000 копійок і суму списання; клас Card приховує залишок, списує тільки додатну доступну суму й показує маску номера та новий залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: поповнення та історію до 20 операцій. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 2. Каталог бібліотеки
1. Початковий рівень. Створити консольну програму Java: ввести непорожню назву книги, рік 1450..2100 і кількість примірників 0..1000; клас Book виконує видачу одного примірника лише за наявності; вивести назву й залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести непорожню назву книги, рік 1450..2100 і кількість примірників 0..1000; клас Book виконує видачу одного примірника лише за наявності; вивести назву й залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести непорожню назву книги, рік 1450..2100 і кількість примірників 0..1000; клас Book виконує видачу одного примірника лише за наявності; вивести назву й залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: повернення та статичний лічильник створених книг. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 3. Студентська група
1. Початковий рівень. Створити консольну програму Java: ввести ім’я студента й три оцінки 0..100; клас Student зберігає копію масиву та обчислює середнє; вивести ім’я, середнє й мінімальну оцінку. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести ім’я студента й три оцінки 0..100; клас Student зберігає копію масиву та обчислює середнє; вивести ім’я, середнє й мінімальну оцінку. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ім’я студента й три оцінки 0..100; клас Student зберігає копію масиву та обчислює середнє; вивести ім’я, середнє й мінімальну оцінку. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: клас Group із копією масиву студентів і середнім групи. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 4. Термостат
1. Початковий рівень. Створити консольну програму Java: ввести поточну й бажану температури −30..50 градусів; клас Thermostat з перевіреним сетером показує режим нагрівання, якщо поточна нижча від бажаної. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести поточну й бажану температури −30..50 градусів; клас Thermostat з перевіреним сетером показує режим нагрівання, якщо поточна нижча від бажаної. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести поточну й бажану температури −30..50 градусів; клас Thermostat з перевіреним сетером показує режим нагрівання, якщо поточна нижча від бажаної. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: режими off і heat та журнал зміни цілі. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 5. Смартфон
1. Початковий рівень. Створити консольну програму Java: ввести модель, заряд 0..100 і витрату 0..100 відсоткових пунктів; клас Phone витрачає заряд лише за достатнього залишку; вивести модель і заряд. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести модель, заряд 0..100 і витрату 0..100 відсоткових пунктів; клас Phone витрачає заряд лише за достатнього залишку; вивести модель і заряд. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести модель, заряд 0..100 і витрату 0..100 відсоткових пунктів; клас Phone витрачає заряд лише за достатнього залишку; вивести модель і заряд. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: метод заряджання без перевищення 100. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 6. Раціональне число
1. Початковий рівень. Створити консольну програму Java: ввести чисельник −10000..10000 і ненульовий знаменник у тих самих межах; клас Fraction скорочує дріб за НСД та переносить знак у чисельник; вивести нормальну форму. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести чисельник −10000..10000 і ненульовий знаменник у тих самих межах; клас Fraction скорочує дріб за НСД та переносить знак у чисельник; вивести нормальну форму. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести чисельник −10000..10000 і ненульовий знаменник у тих самих межах; клас Fraction скорочує дріб за НСД та переносить знак у чисельник; вивести нормальну форму. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання двох дробів із проміжними обчисленнями long. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 7. Комплексне число
1. Початковий рівень. Створити консольну програму Java: ввести дійсну й уявну частини −1000..1000; незмінний Complex повертає модуль через Math.hypot і спряжене число; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести дійсну й уявну частини −1000..1000; незмінний Complex повертає модуль через Math.hypot і спряжене число; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести дійсну й уявну частини −1000..1000; незмінний Complex повертає модуль через Math.hypot і спряжене число; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання й множення двох чисел. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 8. Час доби
1. Початковий рівень. Створити консольну програму Java: ввести години 0..23, хвилини 0..59 і зсув −10000..10000 хвилин; TimeOfDay зберігає хвилини доби, застосовує Math.floorMod із 1440; вивести час після зсуву. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести години 0..23, хвилини 0..59 і зсув −10000..10000 хвилин; TimeOfDay зберігає хвилини доби, застосовує Math.floorMod із 1440; вивести час після зсуву. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести години 0..23, хвилини 0..59 і зсув −10000..10000 хвилин; TimeOfDay зберігає хвилини доби, застосовує Math.floorMod із 1440; вивести час після зсуву. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: різницю між двома моментами вперед у межах доби. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 9. Кошик покупця
1. Початковий рівень. Створити консольну програму Java: ввести назву, ціну 0..100000 копійок і кількість 1..100; CartItem обчислює вартість як long; вивести назву й вартість. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву, ціну 0..100000 копійок і кількість 1..100; CartItem обчислює вартість як long; вивести назву й вартість. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, ціну 0..100000 копійок і кількість 1..100; CartItem обчислює вартість як long; вивести назву й вартість. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: кошик до 20 позицій із загальною сумою. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 10. Паркування
1. Початковий рівень. Створити консольну програму Java: ввести місткість 1..1000, зайняті місця 0..місткість і кількість прибулих авто; Parking приймає авто лише за наявності всіх місць; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести місткість 1..1000, зайняті місця 0..місткість і кількість прибулих авто; Parking приймає авто лише за наявності всіх місць; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести місткість 1..1000, зайняті місця 0..місткість і кількість прибулих авто; Parking приймає авто лише за наявності всіх місць; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: виїзд авто та статичний лічильник успішних в’їздів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 11. Секундомір
1. Початковий рівень. Створити консольну програму Java: ввести накопичені секунди 0..86400 і приріст 0..86400; Stopwatch додає приріст за верхньої межі 172800; вивести години, хвилини, секунди. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести накопичені секунди 0..86400 і приріст 0..86400; Stopwatch додає приріст за верхньої межі 172800; вивести години, хвилини, секунди. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести накопичені секунди 0..86400 і приріст 0..86400; Stopwatch додає приріст за верхньої межі 172800; вивести години, хвилини, секунди. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: скидання й незалежні результати двох екземплярів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 12. Вектор у просторі
1. Початковий рівень. Створити консольну програму Java: ввести три координати −1000..1000; незмінний Vector3 повертає довжину і вектор із протилежними координатами; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести три координати −1000..1000; незмінний Vector3 повертає довжину і вектор із протилежними координатами; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести три координати −1000..1000; незмінний Vector3 повертає довжину і вектор із протилежними координатами; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: скалярний добуток двох векторів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 13. Картка метро
1. Початковий рівень. Створити консольну програму Java: ввести ідентифікатор і кількість поїздок 0..100; MetroCard списує одну поїздку за наявності; вивести залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести ідентифікатор і кількість поїздок 0..100; MetroCard списує одну поїздку за наявності; вивести залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ідентифікатор і кількість поїздок 0..100; MetroCard списує одну поїздку за наявності; вивести залишок. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: поповнення до 100 і лічильник проходів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 14. Опитування
1. Початковий рівень. Створити консольну програму Java: ввести питання, кількості відповідей так і ні 0..10000 та нову відповідь; Poll збільшує потрібний лічильник; вивести кількості й частку так, для нульової суми – 0. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести питання, кількості відповідей так і ні 0..10000 та нову відповідь; Poll збільшує потрібний лічильник; вивести кількості й частку так, для нульової суми – 0. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести питання, кількості відповідей так і ні 0..10000 та нову відповідь; Poll збільшує потрібний лічильник; вивести кількості й частку так, для нульової суми – 0. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: незмінний знімок результатів до та після голосування. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 15. Готельний номер
1. Початковий рівень. Створити консольну програму Java: ввести номер кімнати, місткість 1..6 і кількість гостей 0..місткість; Room заселяє додаткових гостей без перевищення місткості; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести номер кімнати, місткість 1..6, кількість гостей 0..місткість і кількість нових гостей 1..6; Room заселяє нових гостей лише без перевищення місткості; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести номер кімнати, місткість 1..6 і кількість гостей 0..місткість; Room заселяє додаткових гостей без перевищення місткості; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: виселення й готель із масивом кімнат. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 16. Список відтворення
1. Початковий рівень. Створити консольну програму Java: ввести назву композиції та тривалість 1..7200 секунд; Track має приватні фінальні поля й формат хвилини:секунди; вивести композицію. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву композиції та тривалість 1..7200 секунд; Track має приватні фінальні поля й формат хвилини:секунди; вивести композицію. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву композиції та тривалість 1..7200 секунд; Track має приватні фінальні поля й формат хвилини:секунди; вивести композицію. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: Playlist із захисною копією масиву та сумарною тривалістю. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 17. Поліном
1. Початковий рівень. Створити консольну програму Java: ввести коефіцієнти a, b, c і x у межах −100..100; Polynomial зберігає коефіцієнти незмінно й обчислює (a * x + b) * x + c; вивести значення. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести коефіцієнти a, b, c і x у межах −100..100; Polynomial зберігає коефіцієнти незмінно й обчислює (a * x + b) * x + c; вивести значення. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести коефіцієнти a, b, c і x у межах −100..100; Polynomial зберігає коефіцієнти незмінно й обчислює (a * x + b) * x + c; вивести значення. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: новий поліном похідної та його значення. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 18. Лічильник води
1. Початковий рівень. Створити консольну програму Java: ввести попереднє й поточне цілі показання 0..1000000; WaterMeter не дозволяє зменшення, виводить витрату як різницю. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести попереднє й поточне цілі показання 0..1000000; WaterMeter не дозволяє зменшення, виводить витрату як різницю. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести попереднє й поточне цілі показання 0..1000000; WaterMeter не дозволяє зменшення, виводить витрату як різницю. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: навчальний тариф у копійках за одиницю та суму long. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 19. Спортсмен
1. Початковий рівень. Створити консольну програму Java: ввести ім’я й три результати часу 1..10000 секунд; Athlete копіює масив і визначає найкращий, тобто мінімальний час; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести ім’я й три результати часу 1..10000 секунд; Athlete копіює масив і визначає найкращий, тобто мінімальний час; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести ім’я й три результати часу 1..10000 секунд; Athlete копіює масив і визначає найкращий, тобто мінімальний час; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання тренування з обмеженням 20 результатів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 20. Прямокутники
1. Початковий рівень. Створити консольну програму Java: ввести додатні скінченні ширину й висоту до 10000; Rectangle має конструктори прямокутника та квадрата; вивести площу й периметр. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести додатні скінченні ширину й висоту до 10000; Rectangle має конструктори прямокутника та квадрата; вивести площу й периметр. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести додатні скінченні ширину й висоту до 10000; Rectangle має конструктори прямокутника та квадрата; вивести площу й периметр. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: незмінне масштабування на коефіцієнт 0.1..10 з перевіркою меж. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 21. Кулінарний рецепт
1. Початковий рівень. Створити консольну програму Java: ввести назву, число порцій 1..100 і масу інгредієнта 1..10000 г; Recipe обчислює масу для заданої кількості порцій 1..100; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву, число порцій 1..100 і масу інгредієнта 1..10000 г; Recipe обчислює масу для заданої кількості порцій 1..100; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, число порцій 1..100 і масу інгредієнта 1..10000 г; Recipe обчислює масу для заданої кількості порцій 1..100; вивести результат. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив іменованих інгредієнтів із захисною копією. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 22. Автомобіль
1. Початковий рівень. Створити консольну програму Java: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань 0..1000 км; Car виконує поїздку лише за достатнього пального; вивести залишок і пробіг. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань 0..1000 км; Car виконує поїздку лише за достатнього пального; вивести залишок і пробіг. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести місткість бака 1..100 л, залишок, витрату 1..30 л/100 км і відстань 0..1000 км; Car виконує поїздку лише за достатнього пального; вивести залишок і пробіг. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: заправлення без переповнення бака. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 23. Навчальні курси
1. Початковий рівень. Створити консольну програму Java: ввести назву, місткість 1..100 і число учасників 0..місткість; Course записує одного учасника або відмовляє; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву, місткість 1..100 і число учасників 0..місткість; Course записує одного учасника або відмовляє; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, місткість 1..100 і число учасників 0..місткість; Course записує одного учасника або відмовляє; вивести вільні місця. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: скасування запису й статистику створених курсів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 24. Піца
1. Початковий рівень. Створити консольну програму Java: ввести назву, діаметр 10..60 см і ціну 1..100000 копійок; Pizza обчислює площу та ціну за квадратний сантиметр; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву, діаметр 10..60 см і ціну 1..100000 копійок; Pizza обчислює площу та ціну за квадратний сантиметр; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву, діаметр 10..60 см і ціну 1..100000 копійок; Pizza обчислює площу та ціну за квадратний сантиметр; вивести обидва результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: порівняння двох розмірів за питомою ціною. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 25. Матриця
1. Початковий рівень. Створити консольну програму Java: ввести чотири цілі елементи −1000..1000 матриці 2 на 2; Matrix2 зберігає їх приватно, повертає визначник і транспоновану нову матрицю; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести чотири цілі елементи −1000..1000 матриці 2 на 2; Matrix2 зберігає їх приватно, повертає визначник і транспоновану нову матрицю; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести чотири цілі елементи −1000..1000 матриці 2 на 2; Matrix2 зберігає їх приватно, повертає визначник і транспоновану нову матрицю; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання й множення двох матриць через long. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 26. Трекер звичок
1. Початковий рівень. Створити консольну програму Java: ввести назву звички й сім значень 0 або 1 за дні тижня; Habit копіює масив, повертає кількість виконаних днів і частку; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести назву звички й сім значень 0 або 1 за дні тижня; Habit копіює масив, повертає кількість виконаних днів і частку; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести назву звички й сім значень 0 або 1 за дні тижня; Habit копіює масив, повертає кількість виконаних днів і частку; вивести результати. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: найдовшу послідовність виконаних днів. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 27. Ліфт
1. Початковий рівень. Створити консольну програму Java: ввести число поверхів 2..100, поточний і цільовий поверхи 1..число поверхів; Elevator змінює поверх через метод moveTo; вивести напрям і пройдені поверхи. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести число поверхів 2..100, поточний і цільовий поверхи 1..число поверхів; Elevator змінює поверх через метод moveTo; вивести напрям і пройдені поверхи. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести число поверхів 2..100, поточний і цільовий поверхи 1..число поверхів; Elevator змінює поверх через метод moveTo; вивести напрям і пройдені поверхи. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: журнал до 20 викликів і сумарний шлях. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 28. Грошова сума
1. Початковий рівень. Створити консольну програму Java: ввести невід’ємні гривні до 1000000 і копійки 0..99; незмінний Money зберігає загальні копійки як long; вивести суму з двома знаками. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести невід’ємні гривні до 1000000 і копійки 0..99; незмінний Money зберігає загальні копійки як long; вивести суму з двома знаками. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести невід’ємні гривні до 1000000 і копійки 0..99; незмінний Money зберігає загальні копійки як long; вивести суму з двома знаками. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: додавання й віднімання без від’ємного результату. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 29. Словник термінів
1. Початковий рівень. Створити консольну програму Java: ввести непорожній термін та визначення; Term нормалізує крайові пробіли й приховує поля; вивести пару через toString. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести непорожній термін та визначення; Term нормалізує крайові пробіли й приховує поля; вивести пару через toString. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести непорожній термін та визначення; Term нормалізує крайові пробіли й приховує поля; вивести пару через toString. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: масив до 20 термінів і точний пошук без урахування регістру. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Варіант 30. Черга клієнтів
1. Початковий рівень. Створити консольну програму Java: ввести місткість 1..20 і непорожні імена клієнтів; Queue з приватним масивом додає в кінець і вилучає з початку; вивести обслужене ім’я та розмір. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString().
2. Базовий рівень. Створити консольну програму Java: ввести місткість 1..20 і непорожні імена клієнтів; Queue з приватним масивом додає в кінець і вилучає з початку; вивести обслужене ім’я та розмір. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів.
3. Високий рівень. Створити консольну програму Java: ввести місткість 1..20 і непорожні імена клієнтів; Queue з приватним масивом додає в кінець і вилучає з початку; вивести обслужене ім’я та розмір. Подати UML класів; використати приватні поля, перевірений конструктор, методи доступу та toString(). Обробити масив від 1 до 20 наборів із клавіатури, перевірити кожне поле до зміни стану; вивести рядок результату для кожного набору й кількість прийнятих та відхилених наборів. Додати: циклічні індекси й звіт про відмови переповнення та порожньої черги. Реалізувати --help, іменовані параметри та повторюваний --item зі складеним значенням: поля наведеного набору розділено крапкою з комою, роздільник у тексті заборонений. Без аргументів запитувати ті самі дані з клавіатури. Діагностику писати в stderr; код завершення 0 означає успіх, 2 – помилку введення, 1 – непередбачену помилку виконання. Вивести вирівняну таблицю результатів і підсумкові кількості; додати щонайменше п’ять перевірок: звичайну, граничну, неправильний формат, порушення інваріанта та відмову без зміни стану.
Порядок виконання та захисту роботи
- Запишіть поля, одиниці, межі та інваріанти.
- Намалюйте UML й визначте публічні операції.
- Реалізуйте конструктори та перевірки до зміни стану.
- Перевірте два незалежні об’єкти, спільне посилання, успіх, межу й відмову без часткової зміни.
- Відокремте пакети model/app та зберіть виконуваний JAR.
- Подайте код, UML, README й щонайменше п’ять перевірок.
- На захисті покажіть this, static і закриті поля в debugger.