Menu
Coddy logo textTech

Envanter Raporunu Yazdırma

Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 34 / 56.

challenge icon

Görev

Kolay

Kapsamlı bir envanter raporu özelliği uygulayarak envanter takip sisteminizi tamamlayın. Bu son ders, bir map'in tamamı boyunca nasıl döngü kurulacağını ve saklanan tüm verilerin temiz, düzenli bir formatta nasıl sunulacağını göstermektedir.

Aşağıdaki envanter ile başlayın:

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

Programınız şunları yapmalıdır:

  1. Tüm öğeleri ve mevcut miktarlarını gösteren eksiksiz bir envanter raporu oluşturun
  2. Envanterdeki farklı öğelerin toplam sayısını hesaplayın ve görüntüleyin
  3. Tüm öğelerin birleşik toplam miktarını hesaplayın ve görüntüleyin
  4. En yüksek miktara sahip öğeyi belirleyin ve görüntüleyin
  5. En düşük miktara sahip öğeyi belirleyin ve görüntüleyin

Aşağıdaki tam çıktı formatını kullanın:

Envanter raporu başlığı:

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

Tüm öğeler (alfabetik sırayla):

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

Özet istatistikler:

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

Tüm envanter map'i boyunca döngü kurmak için aralık tabanlı (range-based) bir for döngüsü kullanın. Her anahtar-değer çifti için, öğe adına pair.first ve miktara pair.second ile erişin. Map, döngü sırasında alfabetik sırayı otomatik olarak korur, bu nedenle ek bir sıralama gerekmez.

En düşük miktarlı öğeyi bulmak için lowestQuantity değişkeninizi INT_MAX (mümkün olan en büyük tam sayı değeri, <climits> veya <iostream> eklendikten sonra kullanılabilir) değerine başlatın. Bu, ilk öğenin miktarının her zaman başlangıç değerinden daha küçük olmasını sağlar, böylece karşılaştırma envanterdeki gerçek miktarlardan bağımsız olarak doğru şekilde çalışır.

Kendin dene

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

Mantık & Akış bölümündeki tüm dersler