Перейти до змісту

ЛР18. Записи, enum class, switch і колекції

Коротко про роботу

Набір заявок має ідентифікатор, назву, стан і числову вагу. Дані треба зібрати в предметні записи. Варіант визначає STUDENT_X.

Відкрити робочий зошит Як виконувати лабораторні

1. Умова

Набір заявок має ідентифікатор, назву, стан і числову вагу. Дані треба зібрати в предметні записи.

Перша комірка зошита лише показує значення вашого STUDENT_X разом із типами. Вона не оголошує і не створює предметні змінні. У коді кожного завдання перенесіть потрібні значення та самостійно оголосіть/створіть відповідні змінні.

2. Що треба знати

Робота виконується після Л1–Л9. Потрібні поняття:

  1. struct і поле
  2. enum class
  3. switch
  4. std::vector записів

Межа матеріалу

Використовуйте поняття, вивчені до Л1–Л9. Не зберігайте стан як довільне «магічне» ціле число у фінальній моделі. Для нього потрібний enum class.

3. Варіант, вхідні дані та результат

У зошиті заповніть STUDENT_NAME, STUDENT_GROUP і STUDENT_X від 1 до 30.

Вхідні дані

Поле Тип Зміст
ids std::vector<int> ідентифікатори
names std::vector<std::string> назви
statuses std::vector<int> коди станів 0..2
weights std::vector<int> ваги

Поля результату

Поле Зміст
status_counts лічильники трьох станів
max_id ідентифікатор запису з найбільшою вагою
total_weight сума ваг

Назви полів результату не змінюйте. Перша комірка лише показує значення варіанта і не оголошує предметні змінні. Перед розв’язанням кожного завдання самостійно оголосіть потрібні вхідні змінні з показаними значеннями. Власні та результуючі змінні також оголошуйте звичайно, як у лекційних прикладах. Обчислення виконуйте у блоці { ... }; код над блоком використовуйте лише там, де це позначено. Наприкінці блока вже є службовий рядок самоперевірки для контрольних полів — його не потрібно писати або змінювати. Формат std::cout обирайте за змістом завдання: спеціального формату для самоперевірки немає.

4. Терміни і правила

Терміни

  • запис — набір пов’язаних полів одного об’єкта, у C++ часто struct.
  • enum class — тип із фіксованим набором іменованих станів.

Правила

  1. Елементи з однаковим індексом у ids, names, statuses і weights утворюють один запис.
  2. Коди станів мають фіксоване відображення: 0 → pending, 1 → active, 2 → closed.
  3. status_counts зберігає кількості у порядку [pending, active, closed].
  4. max_id — ідентифікатор запису з найбільшою вагою; total_weight — сума ваг усіх записів.

5. Завдання

Завдання 1

Опишіть запис через struct і стан через enum class. Створіть записи зі свого варіанта.

Завдання 2

Через switch виведіть текстову назву стану кожного запису.

Завдання 3

Порахуйте записи кожного стану у status_counts. Запишіть max_id і total_weight.

6. Перевірка і здача

  1. Запустіть самоперевірку та виправте помилки.
  2. Перезапустіть ядро і виконайте роботу ще раз від початку.
  3. Збережіть .ipynb і PDF з кодом та результатами.

Назва PDF: LR18_Прізвище_Група_VNN.pdf.