Menu
Coddy logo textTech

Удаление товаров

Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 33 из 56.

challenge icon

Задание

Легко

Завершите создание системы отслеживания инвентаря, реализовав функциональность для списания товаров со склада. Этот урок демонстрирует, как безопасно уменьшать количество товаров в инвентаре, предотвращая отрицательные остатки и обрабатывая ситуации с отсутствующими товарами.

Начните со следующего начального инвентаря:

  • apples: 50
  • bananas: 30
  • oranges: 25

Будут предоставлены следующие входные данные:

  • Целое число n, представляющее количество операций по списанию запасов
  • Затем n пар входных данных:
    • Строка, представляющая название товара
    • Целое число, представляющее количество для удаления

Ваша программа должна:

  1. Начать с начального инвентаря, указанного выше
  2. Прочитать количество операций по списанию запасов
  3. Для каждой операции прочитать название товара и количество для удаления
  4. Использовать метод .count(), чтобы проверить, существует ли товар в словаре (map) инвентаря
  5. Если товар не существует, вывести сообщение об ошибке
  6. Если товар существует, проверить, не станет ли остаток отрицательным после удаления указанного количества
  7. Если удаление приведет к отрицательному остатку, вывести сообщение об ошибке
  8. Если удаление допустимо, вычесть количество из текущего запаса и вывести подтверждающее сообщение
  9. После всех операций вывести итоговый инвентарь, показывающий все товары и их обновленное количество

Используйте следующий точный формат вывода:

Для успешного удаления запасов:

Removed [quantity] [item_name]. New total: [new_total]

Для товаров, которые не найдены:

Error: [item_name] not found in inventory

Для недостаточного количества на складе:

Error: Cannot remove [quantity] [item_name]. Only [current_stock] in stock

Итоговый инвентарь:

Final Inventory:\n[item1]: [quantity1]\n[item2]: [quantity2]\n[item3]: [quantity3]\n...

Итоговый инвентарь должен быть выведен в алфавитном порядке по названию товара. Используйте inventory.count(itemName), чтобы проверить существование товара перед попыткой удаления запасов. Вычитайте из инвентаря только в том случае, если товар существует и текущий запас больше или равен удаляемому количеству. Используйте inventory[itemName] -= quantity для вычитания количества из существующего запаса.

Попробуйте сами

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Initialize inventory with existing items
    map<string, int> inventory;
    inventory["apples"] = 50;
    inventory["bananas"] = 30;
    inventory["oranges"] = 25;
    inventory["grapes"] = 40;
    
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        string itemName;
        cin >> itemName;
        
        if (inventory.count(itemName)) {
            cout << itemName << ": " << inventory[itemName] << " in stock" << endl;
        } else {
            cout << itemName << ": Item not found" << endl;
        }
    }
    
    cout << "Total items in inventory: " << inventory.size() << endl;
    
    return 0;
}

Все уроки раздела Логика и управление потоком