Menu
Coddy logo textTech

Imprimir el informe de inventario

Parte de la sección Lógica y Flujo del Journey de C++ de Coddy. Lección 34 de 56.

challenge icon

Desafío

Fácil

Completa tu sistema de seguimiento de inventario implementando una función integral de informes de inventario. Esta lección final demuestra cómo iterar through un mapa completo y presentar todos los datos almacenados en un formato limpio y organizado.

Comienza con el siguiente inventory:

map<string, int> inventory = {
    {"apples", 50},
    {"bananas", 30},
    {"oranges", 25},
    {"grapes", 40},
    {"strawberries", 15}
};

Tu programa debe:

  1. Generar un informe completo de inventory que muestre todos los items y sus cantidades actuales
  2. Calcular y mostrar el número total de items diferentes en el inventory
  3. Calcular y mostrar la cantidad total de todos los items combinados
  4. Identificar y mostrar el item con la cantidad más alta
  5. Identificar y mostrar el item con la cantidad más baja

Usa el siguiente formato de salida exacto:

Encabezado del informe de inventory:

===== INVENTORY REPORT =====

Todos los items (en orden alfabético):

apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15

Estadísticas de resumen:

===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)

Usa un bucle for basado en rangos para iterar through todo el mapa inventory. Para cada par clave-valor, accede al nombre del item con pair.first y a la cantidad con pair.second. El mapa mantiene automáticamente el orden alfabético al iterar, por lo que no se necesita ordenamiento adicional.

Para encontrar el item con la cantidad más baja, inicializa tu variable lowestQuantity con INT_MAX (el valor entero más grande posible, disponible después de incluir <climits>). Esto garantiza que la cantidad del primer item siempre será menor que el valor inicial, por lo que la comparación funcionará correctamente independientemente de las cantidades reales del inventory.

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;
    
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        string itemName;
        int quantity;
        cin >> itemName >> quantity;
        
        if (inventory.count(itemName) == 0) {
            cout << "Error: " << itemName << " not found in inventory" << endl;
        } else if (inventory[itemName] < quantity) {
            cout << "Error: Cannot remove " << quantity << " " << itemName << ". Only " << inventory[itemName] << " in stock" << endl;
        } else {
            inventory[itemName] -= quantity;
            cout << "Removed " << quantity << " " << itemName << ". New total: " << inventory[itemName] << endl;
        }
    }
    
    cout << "Final Inventory:" << endl;
    for (auto& item : inventory) {
        cout << item.first << ": " << item.second << endl;
    }
    
    return 0;
}

Todas las lecciones de Lógica y Flujo

Practica por tu cuenta: Compilador de C++ online