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
KolayEnvanter 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:
- Tüm öğeleri ve mevcut miktarlarını gösteren eksiksiz bir envanter raporu oluşturmak
- Envanterdeki farklı öğelerin toplam sayısını hesaplayıp göstermek
- Tüm öğelerin toplam miktarını hesaplayıp göstermek
- Miktarı en yüksek olan öğeyi belirleyip göstermek
- 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
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 EklemeKendi başına pratik yap: Online C++ derleyicisi