التحقق من المخزون
جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 32 من 56.
التحدي
سهلاستمر في بناء نظام تتبع المخزون الخاص بك من خلال تنفيذ وظيفة التحقق من مستوى المخزون الحالي لعناصر محددة. يوضح هذا الدرس كيفية الاستعلام بأمان عن الخريطة (map) للحصول على معلومات العناصر ومعالجة الحالات التي قد لا توجد فيها العناصر في المخزون.
سيتم توفير المدخلات التالية:
- عدد صحيح
nيمثل عدد استعلامات المخزون التي سيتم إجراؤها - ثم
nمن السلاسل النصية (strings) التي تمثل أسماء العناصر المراد التحقق منها
يجب على برنامجك:
- البدء بالمخزون الأولي التالي:
inventory["apples"] = 50;
inventory["bananas"] = 30;
inventory["oranges"] = 25;
inventory["grapes"] = 40; - قراءة عدد استعلامات المخزون
- لكل استعلام، قراءة اسم العنصر
- استخدام طريقة
.count()للتحقق مما إذا كان العنصر موجوداً في خريطة المخزون (inventory map) - إذا كان العنصر موجوداً، اطبع كمية المخزون الحالية الخاصة به
- إذا لم يكن العنصر موجوداً، اطبع رسالة تشير إلى أنه لم يتم العثور عليه
- بعد كل الاستعلامات، اطبع ملخصاً للعدد الإجمالي للعناصر المختلفة الموجودة حالياً في المخزون
استخدم تنسيق المخرجات الدقيق التالي:
لكل استعلام مخزون:
[item_name]: [quantity] in stockللعناصر التي لم يتم العثور عليها:
[item_name]: Item not foundالملخص في النهاية:
Total items in inventory: [number_of_items]استخدم طريقة .count() للتحقق بأمان مما إذا كان كل عنصر موجوداً قبل الوصول إلى قيمته. إذا كانت inventory.count(itemName) تعيد 1، فإن العنصر موجود ويمكنك الوصول بأمان إلى inventory[itemName] للحصول على كميته. إذا كانت تعيد 0، فإن العنصر غير موجود. استخدم طريقة .size() على الخريطة للحصول على العدد الإجمالي للعناصر المختلفة في المخزون للملخص النهائي.
جرّب بنفسك
#include <iostream>
#include <map>
#include <string>
using namespace std;
int main() {
// Initialize the 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;
inventory[itemName] += quantity;
cout << "Added " << quantity << " " << itemName << ". New total: " << inventory[itemName] << endl;
}
cout << "Final Inventory:" << endl;
for (const auto& item : inventory) {
cout << item.first << ": " << item.second << 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مشروع: أداة المخزون
إعداد المشروعإضافة وتحديث العناصر