Menu
CoddyTech

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

Envanter takip sisteminizi kapsamlı bir envanter raporu özelliği uygulayarak tamamlayın. Bu son ders, bir haritanın tamamında nasıl yineleneceğini ve depolanan tüm verilerin düzenli, anlaşılır bir biçimde nasıl sunulacağını gösterir.

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

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

Envanter raporu başlığı:

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

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

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)

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

Miktarı en düşük olan öğeyi bulmak için lowestQuantity değişkeninizi INT_MAX değerine (mümkün olan en büyük tamsayı değeri; <climits> eklendikten sonra kullanılabilir) başlatın. Böylece ilk öğenin miktarı başlangıç değerinden her zaman küçük olur ve envanterdeki gerçek miktarlar ne olursa olsun karşılaştırma doğru ç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