Удаление товаров
Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 33 из 56.
Задание
ЛегкоЗавершите создание системы отслеживания инвентаря, реализовав функциональность для списания товаров со склада. Этот урок демонстрирует, как безопасно уменьшать количество товаров в инвентаре, предотвращая отрицательные остатки и обрабатывая ситуации с отсутствующими товарами.
Начните со следующего начального инвентаря:
apples: 50bananas: 30oranges: 25
Будут предоставлены следующие входные данные:
- Целое число
n, представляющее количество операций по списанию запасов - Затем
nпар входных данных:- Строка, представляющая название товара
- Целое число, представляющее количество для удаления
Ваша программа должна:
- Начать с начального инвентаря, указанного выше
- Прочитать количество операций по списанию запасов
- Для каждой операции прочитать название товара и количество для удаления
- Использовать метод
.count(), чтобы проверить, существует ли товар в словаре (map) инвентаря - Если товар не существует, вывести сообщение об ошибке
- Если товар существует, проверить, не станет ли остаток отрицательным после удаления указанного количества
- Если удаление приведет к отрицательному остатку, вывести сообщение об ошибке
- Если удаление допустимо, вычесть количество из текущего запаса и вывести подтверждающее сообщение
- После всех операций вывести итоговый инвентарь, показывающий все товары и их обновленное количество
Используйте следующий точный формат вывода:
Для успешного удаления запасов:
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;
}Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаров