Skip to content

shillxzy/Lab-4

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Завдання 1. Точка в прямокутнику Створіть клас Point та клас Rectangle. Точка повинна містити координати X та Y, а квадрат повинен містити 2 точки - лівий верхній та правий нижній кути. У класі Rectangle реалізуйте метод Contains(точка Point), який повертає true або false в залежності від того, чи знаходиться точка, передана як атрибут, всередині або зовні об'єкта Rectangle. Точки на стороні квадрата вважаються всередині. Введення

  • У першому рядку виведіть координати лівого верхнього та правого нижнього кута прямокутника у форматі « ».
  • У другому рядку виведіть ціле число N, а у наступних N рядках - координати точок. Виведення Для кожної точки вивести результат методу Contains(). Приклади input output input output input output 0 0 3 3 5 0 0 0 1 4 4 5 3 1 2 True True False False True 2 -3 12 3 4 8 -1 11 3 1 1 2 4 True True False False 5 8 12 15 6 0 0 5 8 12 15 8 15 7 15 8 12 False True True True True True Завдання 2. Резервація Створіть клас PriceCalculator, який обчислює загальну вартість відпочинку, враховуючи ціну за день, кількість днів, сезон і тип знижки. Тип знижки та сезон повинні бути перерахуваннями (enums). Використовуйте клас у методі Main() для читання вхідних даних і виведення на консоль ціни за весь відпочинок. Ціна за день буде помножена в залежності від сезону на:
  • 1 восени
  • 2 навесні
  • 3 взимку
  • 4 влітку Знижка застосовується до загальної ціни і становить одну з наступних величин
  • 20% для VIP-клієнтів
  • 10% для клієнтів, які відвідують вдруге
  • 0%, якщо знижка відсутня Введення В єдиному рядку виведіть всю інформацію про бронювання у форматі: « », де:
  • Ціна за добу буде дійсним десятковим числом в діапазоні [0.01...1000.00]
  • Кількість днів - дійсне ціле число в діапазоні [1...1000]
  • Сезон буде одним з наступних: Весна, Літо, Осінь, Зима
  • Знижка буде одна з: VIP, SecondVisit, None, але її також можна не вводити Виведення У єдиному рядку виведіть загальну вартість відпочинку, округлену до 2 цифр після десяткового роздільника. Приклади input output 50.25 5 Summer VIP 804.00 40 10 Autumn SecondVisit 360.00 120.20 2 Winter 721.20 Завдання 3. Госпіталь Підготувати електронний реєстр для лікарні. У лікарні у є різні відділення:
  • Кардіологія
  • Онкологія
  • відділення невідкладної допомоги
  • тощо. У кожному відділенні є 20 палат для пацієнтів, і в кожній палаті є 3 ліжка. Коли новий пацієнт потрапляє до лікарні, його/її кладуть на перше вільне ліжко у відділенні. Якщо вільних ліжок немає, пацієнта переводять в іншу лікарню. Звичайно, в кожній лікарні є лікарі. У кожного лікаря можуть бути пацієнти в різних відділеннях. Ви отримаєте інформацію про пацієнтів у форматі {Відділення} {Лікар} {Пацієнт} Після команди «Вивести» ви отримаєте ще кілька команд, які вказують, який саме вивід вам потрібно вивести. Ці команди такі:
  • {Відділення} - потрібно вивести всіх пацієнтів цього відділення в порядку надходження
  • {Відділення} {Палата} - потрібно вивести всіх пацієнтів цієї палати в алфавітному порядку
  • {Лікар} - потрібно вивести всіх пацієнтів цього лікаря в алфавітному порядку Програма завершується при отриманні команди «End». Введення У перших рядках виводиться інформація про лікарню, відділення, лікарів та пацієнтів у наступному форматі {Відділення} {Лікар} {Пацієнт} Коли ви прочитаєте рядок «Output», ви отримаєте одну або декілька команд, які вказують, що вам потрібно надрукувати. Зчитати команди для друку, доки не дійдемо до команди «End» Виведення
  • {Відділення} - вивести з нового рядка усіх пацієнтів цього відділення у порядку надходження
  • {Відділення} {Палата} - вивести всіх пацієнтів у цій палаті в алфавітному порядку, кожного з нового рядка
  • {Лікар} - вивести всіх пацієнтів, які лікуються у даного лікаря в алфавітному порядку з нового рядка Обмеження
  • {Кабінет} - єдине слово довжиною 1 < n < 100
  • {Лікар} - ім'я та прізвище, обидва довжиною 1 < n < 20
  • {Пацієнт} - унікальне ім'я довжиною 1 < n < 20
  • {Кімната} - ціле число 1 <= n <= 20
  • Обмеження за часом: 0.3 сек. Обмеження на пам'ять: 16 МБ. Приклади Input Output Cardiology Petar Petrov Ventsi Oncology Ivaylo Kenov Valio Emergency Mariq Mircheva Simo Cardiology Genka Shikerova Simon Emergency Ivaylo Kenov NuPogodi Cardiology Gosho Goshov Esmeralda Oncology Gosho Goshov Cleopatra Output Cardiology End Ventsi Simon Esmeralda Input Output Cardiology Petar Petrov Ventsi Oncology Ivaylo Kenov Valio Emergency Mariq Mircheva Simo Cardiology Genka Shikerova Simon Emergency Ivaylo Kenov NuPogodi Cardiology Gosho Goshov Esmeralda Oncology Gosho Goshov Cleopatra Output Cardiology 1 End Esmeralda Simon Ventsi Завдання 4. Greedy Times Ви відкрили сейф і дісталися до скарбу! Усередині знаходяться всілякі дорогоцінні камені, готівка в різних валютах і золоті злитки. Поруч з вами лежить сумка, яка, на жаль, має обмежений простір. У вас не так багато часу, тому вам потрібно взяти якомога більше багатств! Але для того, щоб отримати більшу кількість найцінніших речей, вам потрібно дотримуватися наступних правил:
  • Кількість золота у вашій сумці завжди повинна бути більшою або дорівнювати кількості дорогоцінних каменів
  • Сума дорогоцінних каменів завжди повинна бути більше або дорівнювати сумі готівки в будь-який час Якщо ви зчитуєте скарб, який порушує це правило, не кладіть його в сумку. Ви завжди повинні бути обережними, щоб не перевищити загальну місткість сумки, оскільки вона порветься і ви втратите все! Вміст сейфу ви отримаєте в одному рядку у форматі пар «предмет - кількість», розділених пробілами. Вам потрібно збирати лише три типи предметів:
  • Готівка - всі предмети, що складаються з трьох літер
  • Коштовне каміння - всі предмети, які закінчуються на «Gem» (мінімум 4 символи)
  • Золото - цей тип має лише один предмет з назвою «Gold» Кожен пункт, який не підпадає під одну з вищезазначених категорій є непотрібним і його слід пропустити. Читання назв елементів повинно бути НЕЗАЛЕЖНИМ від регістру. Ви повинні підсумовувати кількість елементів з однаковими назвами. Якщо ви дотримувались цих правил, то повинні були успішно втекти з повним мішком багатства. Тепер настав час переглянути, що вам вдалося винести з сейфу. Виведіть всі типи, впорядковані за загальною сумою у порядку спадання. Усередині типу впорядкуйте елементи спочатку за алфавітом у порядку спадання, а потім за сумою у порядку зростання. Використовуйте наступний формат для кожного типу: «<{тип}> ${загальна сума}» «##{позиція} - {сума}» - кожен елемент цього типу з нового рядка Введення
  • У першому рядку задано число - місткість мішка
  • У другому рядку виведіть послідовність пар елемент - кількість Виведення Виведіть лише ті типи предметів, які є у сумці, впорядковані за спаданням загальної суми. Усередині типу впорядкуйте товари спочатку за алфавітом у порядку спадання, а потім за кількістю у порядку зростання. Використовуйте наступний формат для кожного типу: «<{тип}> ${загальна сума}» «##{позиція} - {сума}» - кожен елемент з нового рядка Обмеження
  • Максимальна місткість мішка завжди буде додатнім числом
  • Усі величини будуть натуральними числами з діапазону [0 ... 2100000000].
  • Кожен предмет типу gem буде мати назву - не менше 4 символів
  • Обмеження за часом: 0.1 сек. Обмеження на пам'ять: 16 МБ Приклади Input Output 150 Gold 28 Rubygem 16 USD 9 GBP 8 $28 ##Gold - 28 $16 ##Rubygem - 16 $9 ##USD - 9 24000010 USD 1030 Gold 300000 EmeraldGem 900000 Topazgem 290000 CHF 280000 Gold 10000000 JPN 10000 Rubygem 10000000 KLM 3120010 $10300000 ##Gold - 10300000 $10290000 ##Topazgem - 290000 ##Rubygem - 10000000 $3410010 ##KLM - 3120010 ##JPN - 10000 ##CHF - 280000 80345 RubyGem 70000 JAV 10960 Bau 60000 Gold 80000 $80000 ##Gold - 80000

About

my OOP lab#4

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages