Menu
CoddyTech

Inventarbericht ausgeben

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

challenge icon

Aufgabe

Einfach

Vervollständige dein Bestandsverwaltungssystem, indem du eine umfassende Bestandsübersicht implementierst. Diese letzte Lektion zeigt, wie du eine ganze Map durchläufst und alle gespeicherten Daten in einem übersichtlichen, gut strukturierten Format darstellst.

Beginne mit dem folgenden Bestand:

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

Dein Programm sollte:

  1. Eine vollständige Bestandsübersicht erstellen, in der alle Artikel und ihre aktuellen Mengen angezeigt werden
  2. Die Gesamtzahl der verschiedenen Artikel im Bestand berechnen und anzeigen
  3. Die Gesamtmenge aller Artikel zusammen berechnen und anzeigen
  4. Den Artikel mit der höchsten Menge ermitteln und anzeigen
  5. Den Artikel mit der niedrigsten Menge ermitteln und anzeigen

Verwende genau das folgende Ausgabeformat:

Kopfzeile der Bestandsübersicht:

===== 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)

Verwende eine bereichsbasierte for-Schleife, um die gesamte Bestands-Map zu durchlaufen. Greife bei jedem Schlüssel-Wert-Paar mit pair.first auf den Artikelnamen und mit pair.second auf die Menge zu. Die Map hält beim Durchlaufen automatisch die alphabetische Reihenfolge ein, daher ist keine zusätzliche Sortierung erforderlich.

Um den Artikel mit der niedrigsten Menge zu finden, initialisiere deine Variable lowestQuantity mit INT_MAX (dem größtmöglichen Integer-Wert, der nach dem Einbinden von <climits> verfügbar ist). Dadurch ist die Menge des allerersten Artikels immer kleiner als der Startwert, sodass der Vergleich unabhängig von den tatsächlichen Mengen im Bestand 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

Übe selbstständig: Online-C++-Compiler