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 derste, bir haritanın tamamı üzerinde nasıl yineleme yapılacağı ve depolanan tüm verilerin temiz, düzenli bir biçimde nasıl sunulacağı gösterilmektedir.

Aşağıdaki envanterle 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 ürünleri ve mevcut miktarlarını gösteren eksiksiz bir envanter raporu oluşturmak
  2. Envanterdeki farklı ürünlerin toplam sayısını hesaplayıp göstermek
  3. Tüm ürünlerin birleşik toplam miktarını hesaplayıp göstermek
  4. Miktarı en yüksek olan ürünü belirleyip göstermek
  5. Miktarı en düşük olan ürünü belirleyip göstermek

Aşağıdaki kesin çıktı biçimini kullanın:

Envanter raporu başlığı:

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

Tüm ürünler (alfabetik sırayla):

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

Özet istatistikleri:

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

Envanter haritasının tamamı üzerinde yineleme yapmak için aralık tabanlı bir for döngüsü kullanın. Her anahtar-değer çifti için ürün adına pair.first ile, miktara ise pair.second ile erişin. Harita, yineleme sırasında alfabetik sırayı otomatik olarak korur; bu nedenle ek sıralama gerekmez.

Miktarı en düşük olan ürünü bulmak için lowestQuantity değişkenini INT_MAX (mümkün olan en büyük tamsayı değeri; <climits> eklendikten sonra kullanılabilir) olarak başlatın. Bu, ilk ürünün miktarının başlangıç değerinden her zaman küçük olmasını sağlar; böylece envanterdeki gerçek miktarlar ne olursa olsun karşılaştırma 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

Kendi başına pratik yap: Online C++ derleyicisi