إزالة المخزون
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 33 من 56.
التحدي
سهلأكمل نظام تتبع المخزون الخاص بك عن طريق تنفيذ وظيفة إزالة المخزون من العناصر الموجودة. يوضح هذا الدرس كيفية تقليل كميات المخزون بأمان مع منع مستويات المخزون من الانخفاض إلى ما دون الصفر والتعامل مع العناصر غير الموجودة في المخزون.
ابدأ بالمخزون الأولي التالي:
apples: 50bananas: 30oranges: 25
سيتم توفير المدخلات التالية:
- عدد صحيح
nيمثل عدد عمليات إزالة المخزون المطلوب تنفيذها - ثم
nمن أزواج المدخلات:- سلسلة نصية (string) تمثل اسم العنصر
- عدد صحيح يمثل الكمية المراد إزالتها
يجب على برنامجك:
- البدء بالمخزون الأولي المذكور أعلاه
- قراءة عدد عمليات إزالة المخزون
- لكل عملية، قراءة اسم العنصر والكمية المراد إزالتها
- استخدام طريقة
.count()للتحقق مما إذا كان العنصر موجوداً في خريطة (map) المخزون - إذا لم يكن العنصر موجوداً، اطبع رسالة خطأ
- إذا كان العنصر موجوداً، تحقق مما إذا كانت إزالة الكمية ستجعل المخزون سالباً
- إذا كانت الإزالة ستؤدي إلى مخزون سالب، اطبع رسالة خطأ
- إذا كانت الإزالة صالحة، اطرح الكمية من المخزون الحالي واطبع رسالة تأكيد
- بعد كل العمليات، اطبع المخزون النهائي الذي يوضح جميع العناصر وكمياتها المحدثة
استخدم تنسيق المخرجات الدقيق التالي:
لإزالة المخزون بنجاح:
Removed [quantity] [item_name]. New total: [new_total]للعناصر غير الموجودة:
Error: [item_name] not found in inventoryللمخزون غير الكافي:
Error: Cannot remove [quantity] [item_name]. Only [current_stock] in stockالمخزون النهائي:
Final Inventory:\n[item1]: [quantity1]\n[item2]: [quantity2]\n[item3]: [quantity3]\n...يجب طباعة المخزون النهائي بترتيب أبجدي حسب اسم العنصر. استخدم inventory.count(itemName) للتحقق مما إذا كان العنصر موجوداً قبل محاولة إزالة المخزون. لا تطرح من المخزون إلا إذا كان العنصر موجوداً وكان المخزون الحالي أكبر من أو يساوي الكمية التي تتم إزالتها. استخدم inventory[itemName] -= quantity لطرح الكمية من المخزون الموجود.
جرّب بنفسك
#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;
inventory["grapes"] = 40;
int n;
cin >> n;
for (int i = 0; i < n; i++) {
string itemName;
cin >> itemName;
if (inventory.count(itemName)) {
cout << itemName << ": " << inventory[itemName] << " in stock" << endl;
} else {
cout << itemName << ": Item not found" << endl;
}
}
cout << "Total items in inventory: " << inventory.size() << endl;
return 0;
}جميع دروس Logic & Flow
1المؤشرات والذاكرة
ما هو المؤشر؟معامل العنوان (Address-Of)معامل الوصول للقيمة (Dereference)المؤشرات الفارغة (Null Pointers)المؤشرات والمصفوفاتالذاكرة الديناميكية باستخدام 'new'تحرير الذاكرة باستخدام 'delete'مراجعة - تمارين على المؤشرات2المتجهات (المصفوفات الديناميكية)
مقدمة إلى std::vectorإنشاء Vectorإضافة العناصرالوصول إلى العناصرحجم الـ Vectorالتكرار باستخدام For Loopالـ Range-Based For Loopإزالة العناصرملخص - عمليات الـ Vector5مشروع: أداة المخزون
إعداد المشروعإضافة وتحديث العناصر