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

ЛР22. Записи, стани й перевірка інваріантів

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

Набір записів містить повторні ідентифікатори та некоректні кількість або ціну. Потрібно виділити допустиму частину. Варіант визначає STUDENT_X.

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

1. Умова

Набір записів містить повторні ідентифікатори та некоректні кількість або ціну. Потрібно виділити допустиму частину.

Усі обчислення виконуйте з даними свого STUDENT_X. Значення варіанта друкує перша комірка зошита.

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

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

  1. записи і колекції
  2. set / map / unordered_map
  3. інваріант даних
  4. пошук повторів

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

Використовуйте поняття, вивчені до Л1–Л9. Не вважайте перший запис із повторюваним ідентифікатором автоматично допустимим. Умова робить недопустимими всі записи з цим ідентифікатором.

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

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

Вхідні дані

Поле Зміст
ids ідентифікатори
quantities кількості
prices ціни

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

Поле Зміст
invalid_ids усі ідентифікатори недопустимих записів
duplicate_ids повторювані ідентифікатори
valid_count кількість допустимих записів
valid_total сума quantity * price для допустимих записів

Назви полів результату не змінюйте.

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

Терміни

  • інваріант даних — правило, яке повинне залишатися істинним для кожного коректного запису.
  • дублікат — ідентифікатор, що трапляється більше одного разу там, де очікується унікальність.

Правила

  1. Запис утворюють значення з однаковим індексом у ids, quantities і prices.
  2. Локально коректний запис має id > 0, quantity > 0 і price >= 0.
  3. Якщо один id трапляється більше одного разу, усі записи з цим ідентифікатором вважаються недопустимими.
  4. invalid_ids і duplicate_ids поверніть без повторів у зростальному порядку. valid_total — сума quantity * price лише для допустимих записів.

5. Завдання

Завдання 1

Запишіть три правила допустимого запису для id, quantity і price.

Завдання 2

Знайдіть некоректні та повторювані id. Запишіть їх у invalid_ids і duplicate_ids без повторів та у зростальному порядку.

Завдання 3

Відкиньте недопустимі записи. Запишіть кількість допустимих у valid_count, а їхню сумарну вартість — у valid_total.

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

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

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