ЛР18. Записи, enum class, switch і колекції
Коротко про роботу
Набір заявок має ідентифікатор, назву, стан і числову вагу. Дані треба зібрати в предметні записи. Варіант визначає
STUDENT_X.
Відкрити робочий зошит Як виконувати лабораторні
1. Умова
Набір заявок має ідентифікатор, назву, стан і числову вагу. Дані треба зібрати в предметні записи.
Перша комірка зошита лише показує значення вашого STUDENT_X разом із типами. Вона не оголошує і не створює предметні
змінні. У коді кожного завдання перенесіть потрібні значення та самостійно оголосіть/створіть відповідні змінні.
2. Що треба знати
Робота виконується після Л1–Л9. Потрібні поняття:
structі полеenum classswitchstd::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— тип із фіксованим набором іменованих станів.
Правила
- Елементи з однаковим індексом у
ids,names,statusesіweightsутворюють один запис. - Коди станів мають фіксоване відображення:
0 → pending,1 → active,2 → closed. status_countsзберігає кількості у порядку[pending, active, closed].max_id— ідентифікатор запису з найбільшою вагою;total_weight— сума ваг усіх записів.
5. Завдання
Завдання 1
Опишіть запис через struct і стан через enum class. Створіть записи зі свого варіанта.
Завдання 2
Через switch виведіть текстову назву стану кожного запису.
Завдання 3
Порахуйте записи кожного стану у status_counts. Запишіть max_id і total_weight.
6. Перевірка і здача
- Запустіть самоперевірку та виправте помилки.
- Перезапустіть ядро і виконайте роботу ще раз від початку.
- Збережіть
.ipynbі PDF з кодом та результатами.
Назва PDF: LR18_Прізвище_Група_VNN.pdf.