Usuwanie produktów z magazynu
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 33 z 56.
Wyzwanie
ŁatwyUzupełnij swój system śledzenia zapasów, implementując funkcję usuwania produktów z istniejącego asortymentu. Ta lekcja pokazuje, jak bezpiecznie zmniejszać ilości produktów w magazynie, nie dopuszczając do spadku zapasów poniżej zera i obsługując produkty, których nie ma w magazynie.
Rozpocznij od następującego początkowego stanu magazynu:
apples: 50bananas: 30oranges: 25
Dane wejściowe będą miały następującą postać:
- Liczba całkowita
noznaczająca liczbę operacji usuwania produktów z magazynu do wykonania - Następnie
npar danych wejściowych:- Łańcuch znaków reprezentujący nazwę produktu
- Liczba całkowita reprezentująca ilość do usunięcia
Twój program powinien:
- Rozpocząć od początkowego stanu magazynu wymienionego powyżej
- Wczytać liczbę operacji usuwania produktów z magazynu
- Dla każdej operacji wczytać nazwę produktu i ilość do usunięcia
- Użyć metody
.count(), aby sprawdzić, czy produkt istnieje w mapie magazynu - Jeśli produktu nie ma, wyświetlić komunikat o błędzie
- Jeśli produkt istnieje, sprawdzić, czy usunięcie podanej ilości spowoduje, że zapasy spadną poniżej zera
- Jeśli usunięcie spowodowałoby spadek zapasów poniżej zera, wyświetlić komunikat o błędzie
- Jeśli usunięcie jest dozwolone, odjąć podaną ilość od aktualnego stanu magazynowego i wyświetlić komunikat potwierdzający
- Po wykonaniu wszystkich operacji wyświetlić końcowy stan magazynu, obejmujący wszystkie produkty i ich zaktualizowane ilości
Użyj dokładnie następującego formatu wyjściowego:
Po pomyślnym usunięciu produktów z magazynu:
Removed [quantity] [item_name]. New total: [new_total]Jeśli nie znaleziono produktu:
Error: [item_name] not found in inventoryJeśli zapasy są niewystarczające:
Error: Cannot remove [quantity] [item_name]. Only [current_stock] in stockKońcowy stan magazynu:
Final Inventory:
[item1]: [quantity1]
[item2]: [quantity2]
[item3]: [quantity3]
...Końcowy stan magazynu powinien być wyświetlony w kolejności alfabetycznej nazw produktów. Użyj inventory.count(itemName), aby sprawdzić, czy produkt istnieje, zanim spróbujesz usunąć go z magazynu. Odejmuj ilość od stanu magazynowego tylko wtedy, gdy produkt istnieje, a jego aktualny stan jest większy lub równy ilości, która ma zostać usunięta. Użyj inventory[itemName] -= quantity, aby odjąć podaną ilość od istniejącego stanu magazynowego.
Spróbuj swoich sił
#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;
inventory["grapes"] = 40;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string itemName;
cin >> itemName;
if (inventory.count(itemName)) {
cout << itemName << ": " << inventory[itemName] << " in stock" << endl;
} else {
cout << itemName << ": Item not found" << endl;
}
}
cout << "Total items in inventory: " << inventory.size() << endl;
return 0;
}Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online