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 completa de informe de inventario. En esta última lección se muestra cómo recorrer un mapa entero y presentar todos los datos almacenados en un formato claro y organizado.
Empieza 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
Usa el siguiente formato de salida exacto:
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 resumidas:
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)Usa un bucle for basado en rango para recorrer todo el mapa del inventario. 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 recorrerlo, así que no hace falta ordenarlo de otra manera.
Para encontrar el artículo con la cantidad más baja, inicializa la 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 artículo siempre será menor que el valor inicial, por lo que la comparación funcionará correctamente independientemente de las cantidades reales del 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 tareaPractica por tu cuenta: Compilador de C++ online