Menu
Coddy logo textTech

Eliminar existencias

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy — lección 33 de 56.

challenge icon

Desafío

Fácil

Completa tu sistema de seguimiento de inventario implementando la funcionalidad para retirar stock de artículos existentes. Esta lección demuestra cómo disminuir de forma segura las cantidades de inventario mientras se evita que los niveles de stock bajen de cero y se gestionan los artículos que no existen en el inventario.

Comienza con el siguiente inventario inicial:

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

Se proporcionarán las siguientes entradas:

  • Un entero n que representa el número de operaciones de retiro de stock a realizar
  • Luego n pares de entradas:
    • Una cadena que representa el nombre del artículo
    • Un entero que representa la cantidad a retirar

Tu programa debe:

  1. Comenzar con el inventario inicial listado arriba
  2. Leer el número de operaciones de retiro de stock
  3. Para cada operación, leer un nombre de artículo y la cantidad a retirar
  4. Usar el método .count() para verificar si el artículo existe en el mapa de inventario
  5. Si el artículo no existe, imprimir un mensaje de error
  6. Si el artículo existe, verificar si retirar la cantidad haría que el stock fuera negativo
  7. Si el retiro resultara en un stock negativo, imprimir un mensaje de error
  8. Si el retiro es válido, restar la cantidad del stock actual e imprimir un mensaje de confirmación
  9. Después de todas las operaciones, imprimir el inventario final mostrando todos los artículos y sus cantidades actualizadas

Usa el siguiente formato de salida exacto:

Para un retiro de stock exitoso:

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

Para artículos no encontrados:

Error: [item_name] not found in inventory

Para stock insuficiente:

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

Inventario final:

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

El inventario final debe imprimirse en orden alfabético por nombre de artículo. Usa inventory.count(itemName) para verificar si un artículo existe antes de intentar retirar stock. Solo resta del inventario si el artículo existe y el stock actual es mayor o igual a la cantidad que se retira. Usa inventory[itemName] -= quantity para restar la cantidad del stock existente.

Pruébalo tú mismo

#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;
}

Todas las lecciones de Lógica y Flujo