Inventarbericht ausgeben
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy — Lektion 34 von 56.
Aufgabe
EinfachVervollstä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:
- Einen vollständigen Inventarbericht erstellen, der alle Artikel und ihre aktuellen Mengen anzeigt
- Die Gesamtzahl der verschiedenen Artikel im Inventar berechnen und anzeigen
- Die Gesamtmenge aller kombinierten Artikel berechnen und anzeigen
- Den Artikel mit der höchsten Menge identifizieren und anzeigen
- 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: 15Zusammenfassende 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
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen5Projekt: Inventar-Tool
Projekt-SetupArtikel hinzufügen und aktualisieren3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügen