Menu
Coddy logo textTech

Inventarbericht ausgeben

Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 34 von 56.

challenge icon

Aufgabe

Einfach

Vervollständigen Sie Ihr Inventarverfolgungssystem, indem Sie eine umfassende Inventarbericht-Funktion implementieren. Diese abschließende Lektion zeigt, wie man eine gesamte Map durchläuft und alle gespeicherten Daten in einem sauberen, organisierten Format präsentiert.

Beginnen Sie mit dem folgenden Inventar:

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

Ihr Programm sollte:

  1. Einen vollständigen Inventarbericht erstellen, der alle Artikel und ihre aktuellen Mengen anzeigt
  2. Die Gesamtzahl der verschiedenen Artikel im Inventar berechnen und anzeigen
  3. Die Gesamtmenge aller kombinierten Artikel berechnen und anzeigen
  4. Den Artikel mit der höchsten Menge identifizieren und anzeigen
  5. Den Artikel mit der niedrigsten Menge identifizieren und anzeigen

Verwenden Sie das folgende exakte Ausgabeformat:

Header des Inventarberichts:

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

Alle Artikel (in alphabetischer Reihenfolge):

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

Zusammenfassende Statistiken:

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

Verwenden Sie eine bereichsbasierte for-Schleife (range-based for loop), um die gesamte Inventory-Map zu durchlaufen. Greifen Sie für jedes Schlüssel-Wert-Paar mit pair.first auf den Artikelnamen und mit pair.second auf die Menge zu. Die Map behält beim Iterieren automatisch die alphabetische Reihenfolge bei, sodass keine zusätzliche Sortierung erforderlich ist.

Um den Artikel mit der niedrigsten Menge zu finden, initialisieren Sie Ihre Variable lowestQuantity mit INT_MAX (dem größtmöglichen Ganzzahlwert, der nach dem Einbinden von <climits> oder <iostream> verfügbar ist). Dies stellt sicher, dass die Menge des allerersten Artikels immer kleiner als der Startwert ist, sodass der Vergleich unabhängig von den tatsächlichen Mengen im Inventar korrekt funktioniert.

Probier es selbst

#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;
}

Alle Lektionen in Logik & Ablauf