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.
Desafío
FácilCompleta tu sistema de seguimiento de inventario implementando una función de informe de inventario exhaustivo. Esta lección final demuestra cómo iterar a través de un mapa completo y presentar todos los datos almacenados en un formato limpio y organizado.
Comienza con el siguiente inventario:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};Tu programa debe:
- Generar un informe de inventario completo que muestre todos los artículos y sus cantidades actuales
- Calcular y mostrar el número total de artículos diferentes en el inventario
- Calcular y mostrar la cantidad total de todos los artículos combinados
- Identificar y mostrar el artículo con la cantidad más alta
- Identificar y mostrar el artículo con la cantidad más baja
Utiliza exactamente el siguiente formato de salida:
Encabezado del informe de inventario:
===== INVENTORY REPORT =====Todos los artículos (en orden alfabético):
apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15Estadísticas de resumen:
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)Utiliza un bucle for basado en rangos para iterar a través de todo el mapa inventory. Para cada par clave-valor, accede al nombre del artículo 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 es necesario realizar ninguna ordenación adicional.
Para encontrar el artículo con la cantidad más baja, inicializa tu variable lowestQuantity con INT_MAX (el valor entero más grande posible, disponible tras incluir <climits> o <iostream>). Esto asegura que la cantidad del primer artículo siempre sea menor que el valor inicial, de modo que la comparación funcione correctamente independientemente de las cantidades reales en el inventario.
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
1Punteros y memoria
¿Qué es un puntero?Operador de direcciónOperador de desreferenciaPunteros nulosPunteros y arraysMemoria dinámica con 'new'Liberar memoria con 'delete'Resumen: Práctica de punteros2Vectores (Arrays dinámicos)
Introducción a std::vectorCreación de un VectorAgregar elementosAcceder a los elementosTamaño del VectorIterar con un bucle ForBucle For basado en rangosEliminar elementosResumen - Operaciones con Vectores5Proyecto: Herramienta de inventario
Configuración del proyectoAgregar y actualizar artículos3Proyecto: Herramienta de lista de tareas
Descripción general del proyectoAñadir una tarea