Stampa del rapporto di inventario
Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 34 di 56.
Sfida
FacileCompleta il tuo sistema di monitoraggio dell'inventario implementando una funzionalità completa per generare report sull'inventario. Questa lezione finale mostra come scorrere un'intera mappa e presentare tutti i dati memorizzati in un formato chiaro e organizzato.
Inizia con il seguente inventario:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};Il tuo programma dovrebbe:
- Generare un report completo dell'inventario che mostri tutti gli articoli e le relative quantità attuali
- Calcolare e mostrare il numero totale di articoli diversi presenti nell'inventario
- Calcolare e mostrare la quantità totale di tutti gli articoli
- Individuare e mostrare l'articolo con la quantità più alta
- Individuare e mostrare l'articolo con la quantità più bassa
Usa il seguente formato di output esatto:
Intestazione del report dell'inventario:
===== INVENTORY REPORT =====Tutti gli articoli (in ordine alfabetico):
apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15Statistiche riepilogative:
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)Usa un ciclo for basato su intervallo per scorrere l'intera mappa dell'inventario. Per ogni coppia chiave-valore, accedi al nome dell'articolo con pair.first e alla quantità con pair.second. Durante l'iterazione, la mappa mantiene automaticamente l'ordine alfabetico, quindi non è necessario alcun ordinamento aggiuntivo.
Per trovare l'articolo con la quantità più bassa, inizializza la variabile lowestQuantity a INT_MAX (il valore intero più grande possibile, disponibile dopo aver incluso <climits>). In questo modo, la quantità del primissimo articolo sarà sempre inferiore al valore iniziale e il confronto funzionerà correttamente, indipendentemente dalle quantità effettive presenti nell'inventario.
Provalo tu
#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;
}Tutte le lezioni di Logica e flusso
1Puntatori e memoria
Che cos'è un puntatore?Operatore indirizzoOperatore di dereferenziazionePuntatori nulliPuntatori e arrayMemoria dinamica con 'new'Liberare la memoria con 'delete'Riepilogo - Esercizi sui puntatori2Vettori (array dinamici)
Introduzione a std::vectorCreare un vettoreAggiungere elementiAccedere agli elementiDimensione del vettoreIterare con un ciclo forCiclo for basato su intervalloRimuovere elementiRiepilogo - Operazioni sui vettori5Progetto: strumento per l’inventario
Configurazione del progettoAggiunta e aggiornamento degli articoli3Progetto: Strumento per l’elenco delle attività
Panoramica del progettoAggiungere un’attivitàEsercitati da solo: Compilatore C++ online