Menu
Coddy logo textTech

Drukowanie raportu magazynowego

Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 34 z 56.

challenge icon

Wyzwanie

Łatwy

Uzupełnij system śledzenia zapasów, implementując kompleksową funkcję raportowania zapasów. Ta ostatnia lekcja pokazuje, jak iterować przez całą mapę i przedstawiać wszystkie zapisane dane w przejrzystym, uporządkowanym formacie.

Zacznij od następujących zapasów:

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

Twój program powinien:

  1. Wygenerować kompletny raport zapasów, wyświetlający wszystkie produkty i ich aktualne ilości
  2. Obliczyć i wyświetlić łączną liczbę różnych produktów w zapasach
  3. Obliczyć i wyświetlić łączną ilość wszystkich produktów
  4. Określić i wyświetlić produkt o największej ilości
  5. Określić i wyświetlić produkt o najmniejszej ilości

Użyj dokładnie następującego formatu wyjściowego:

Nagłówek raportu zapasów:

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

Wszystkie produkty (w kolejności alfabetycznej):

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

Statystyki podsumowujące:

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

Użyj pętli for opartej na zakresie, aby iterować przez całą mapę zapasów. Dla każdej pary klucz-wartość pobierz nazwę produktu za pomocą pair.first, a ilość za pomocą pair.second. Podczas iteracji mapa automatycznie zachowuje kolejność alfabetyczną, więc dodatkowe sortowanie nie jest potrzebne.

Aby znaleźć produkt o najmniejszej ilości, zainicjalizuj zmienną lowestQuantity wartością INT_MAX (największą możliwą wartością typu całkowitego, dostępną po dołączeniu <climits>). Dzięki temu ilość pierwszego produktu zawsze będzie mniejsza od wartości początkowej, więc porównanie zadziała poprawnie niezależnie od rzeczywistych ilości produktów w zapasach.

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

Wszystkie lekcje w sekcji Logika i przepływ programu

Poćwicz samodzielnie: Kompilator C++ online