Проверка остатков
Часть раздела Логика и управление потоком путешествия по C++ на Coddy — урок 32 из 56.
Задание
ЛегкоПродолжайте создавать свою систему отслеживания запасов, реализовав функциональность для проверки текущего уровня запасов определенных товаров. Этот урок демонстрирует, как безопасно запрашивать информацию о товаре в объекте map и обрабатывать случаи, когда товары могут отсутствовать в инвентаре.
Будут предоставлены следующие входные данные:
- Целое число
n, представляющее количество запросов о наличии товара для выполнения - Затем
nстрок, представляющих названия товаров для проверки
Ваша программа должна:
- Начать со следующего начального инвентаря:
inventory["apples"] = 50;
inventory["bananas"] = 30;
inventory["oranges"] = 25;
inventory["grapes"] = 40; - Прочитать количество запросов о наличии
- Для каждого запроса прочитать название товара
- Использовать метод
.count(), чтобы проверить, существует ли товар в объекте map инвентаря - Если товар существует, вывести его текущее количество на складе
- Если товар не существует, вывести сообщение о том, что он не найден
- После всех запросов вывести сводку об общем количестве различных товаров, находящихся в данный момент в инвентаре
Используйте следующий точный формат вывода:
Для каждого запроса о наличии:
[item_name]: [quantity] in stockДля товаров, которые не найдены:
[item_name]: Item not foundСводка в конце:
Total items in inventory: [number_of_items]Используйте метод .count() для безопасной проверки существования каждого товара перед доступом к его значению. Если inventory.count(itemName) возвращает 1, товар существует, и вы можете безопасно обратиться к inventory[itemName], чтобы получить его количество. Если возвращается 0, товара не существует. Используйте метод .size() для объекта map, чтобы получить общее количество различных товаров в инвентаре для итоговой сводки.
Попробуйте сами
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Initialize the inventory with existing items
map<string, int> inventory;
inventory["apples"] = 50;
inventory["bananas"] = 30;
inventory["oranges"] = 25;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string itemName;
int quantity;
cin >> itemName >> quantity;
inventory[itemName] += quantity;
cout << "Added " << quantity << " " << itemName << ". New total: " << inventory[itemName] << endl;
}
cout << "Final Inventory:" << endl;
for (const auto& item : inventory) {
cout << item.first << ": " << item.second << endl;
}
return 0;
}Все уроки раздела Логика и управление потоком
1Указатели и память
Что такое указатель?Оператор взятия адресаОператор разыменованияНулевые указателиУказатели и массивыДинамическая память и 'new'Освобождение памяти и 'delete'Итоги: Практика с указателями2Векторы (динамические массивы)
Знакомство с std::vectorСоздание вектораДобавление элементовДоступ к элементамРазмер вектораИтерация с помощью цикла ForRange-based цикл ForУдаление элементовИтоги: операции с векторами5Проект: Инструмент инвентаризации
Настройка проектаДобавление и обновление товаров