Inventarbericht ausgeben
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 34 von 56.
Aufgabe
EinfachVervollständige dein Bestandsverfolgungssystem, indem du eine umfassende Bestandsberichtsfunktion implementierst. Diese abschließende Lektion zeigt, wie du eine gesamte Map durchläufst und alle gespeicherten Daten in einem übersichtlichen, organisierten Format präsentierst.
Beginne mit dem folgenden Bestand:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};Dein Programm sollte:
- Einen vollständigen Bestandsbericht erstellen, der alle Artikel und ihre aktuellen Mengen anzeigt
- Die Gesamtzahl der verschiedenen Artikel im Bestand berechnen und anzeigen
- Die Gesamtmenge aller Artikel zusammen berechnen und anzeigen
- Den Artikel mit der höchsten Menge ermitteln und anzeigen
- Den Artikel mit der niedrigsten Menge ermitteln und anzeigen
Verwende das folgende genaue Ausgabeformat:
Kopfzeile des Bestandsberichts:
===== 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)Verwende eine range-based for-Schleife, um die gesamte Bestands-Map zu durchlaufen. Greife 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 Durchlaufen automatisch die alphabetische Reihenfolge bei, 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 ganzzahligen Wert, der nach dem Einbinden von <climits> verfügbar ist). Dadurch wird sichergestellt, dass die Menge des allerersten Artikels immer kleiner als der Ausgangswert ist, 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
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Übe selbstständig: Online-C++-Compiler