Menu
CoddyTech

Stampa del rapporto di inventario

Fa parte della sezione Logica e flusso del percorso C++ di Coddy. Lezione 34 di 56.

challenge icon

Sfida

Facile

Completa il tuo sistema di monitoraggio dell'inventario implementando una funzione completa di report dell'inventario. Questa lezione finale mostra come scorrere un'intera mappa e presentare tutti i dati archiviati 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:

  1. Generare un report completo dell'inventario che mostri tutti gli articoli e le rispettive quantità attuali
  2. Calcolare e mostrare il numero totale di articoli diversi presenti nell'inventario
  3. Calcolare e mostrare la quantità totale di tutti gli articoli combinati
  4. Individuare e mostrare l'articolo con la quantità più alta
  5. 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: 15

Statistiche 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 un ulteriore ordinamento.

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 primo articolo sarà sempre inferiore al valore iniziale, quindi il confronto funzionerà correttamente a prescindere 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

Esercitati da solo: Compilatore C++ online