Envanter Raporunu Yazdırma
Coddy'nin C++ Journey'sinin Mantık & Akış bölümünün bir parçası — ders 34 / 56.
Görev
KolayKapsamlı 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:
- Tüm öğeleri ve mevcut miktarlarını gösteren eksiksiz bir envanter raporu oluşturun
- Envanterdeki farklı öğelerin toplam sayısını hesaplayın ve görüntüleyin
- Tüm öğelerin birleşik toplam miktarını hesaplayın ve görüntüleyin
- En yüksek miktara sahip öğeyi belirleyin ve görüntüleyin
- 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
1İşaretçiler ve Bellek
İşaretçi Nedir?Adres OperatörüDereference OperatörüNull İşaretçilerİşaretçiler ve Diziler'new' ile Dinamik Bellek'delete' ile Belleği Serbest BırakmaÖzet - İşaretçi Pratiği2Vektörler (Dinamik Diziler)
std::vector'a GirişBir Vektör OluşturmaEleman EklemeElemanlara ErişmeVektör BoyutuFor Döngüsü ile YinelemeAralık Tabanlı For DöngüsüEleman SilmeÖzet - Vektör İşlemleri5Proje: Envanter Aracı
Proje KurulumuÖğe Ekleme ve Güncelleme3Proje: Görev Listesi Aracı
Projeye Genel BakışGörev Ekleme