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 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:
- Tüm ürünleri ve mevcut miktarlarını gösteren eksiksiz bir envanter raporu oluşturmak
- Envanterdeki farklı ürünlerin toplam sayısını hesaplayıp göstermek
- Tüm ürünlerin birleşik toplam miktarını hesaplayıp göstermek
- Miktarı en yüksek olan ürünü belirleyip göstermek
- 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
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