Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

طباعة تقرير المخزون

جزء من قسم Logic & Flow في رحلة C++ على Coddy — الدرس 34 من 56.

challenge icon

التحدي

سهل

أكمل نظام تتبع المخزون الخاص بك من خلال تنفيذ ميزة تقرير المخزون الشاملة. يوضح هذا الدرس الأخير كيفية التكرار عبر الخريطة (map) بالكامل وتقديم جميع البيانات المخزنة بتنسيق نظيف ومنظم.

ابدأ بالمخزون التالي:

map<string, int> inventory = {
    {"apples", 50},
    {"bananas", 30},
    {"oranges", 25},
    {"grapes", 40},
    {"strawberries", 15}
};

يجب أن يقوم برنامجك بما يلي:

  1. إنشاء تقرير مخزون كامل يعرض جميع العناصر وكمياتها الحالية
  2. حساب وعرض العدد الإجمالي للعناصر المختلفة في المخزون
  3. حساب وعرض الكمية الإجمالية لجميع العناصر مجتمعة
  4. تحديد وعرض العنصر الذي يحتوي على أعلى كمية
  5. تحديد وعرض العنصر الذي يحتوي على أقل كمية

استخدم تنسيق المخرجات الدقيق التالي:

رأس تقرير المخزون:

===== INVENTORY REPORT =====

جميع العناصر (بالترتيب الأبجدي):

apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15

إحصائيات الملخص:

===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)

استخدم حلقة for القائمة على النطاق (range-based for loop) للتكرار عبر خريطة المخزون بالكامل. لكل زوج من المفتاح والقيمة، قم بالوصول إلى اسم العنصر باستخدام pair.first والكمية باستخدام pair.second. تحافظ الخريطة تلقائياً على الترتيب الأبجدي عند التكرار، لذا لا يلزم إجراء فرز إضافي.

للعثور على العنصر ذو الكمية الأقل، قم بتهيئة متغير lowestQuantity الخاص بك إلى INT_MAX (أكبر قيمة صحيحة ممكنة، متاحة بعد تضمين <climits> أو <iostream>). يضمن ذلك أن كمية العنصر الأول ستكون دائماً أقل من القيمة الابتدائية، بحيث تعمل المقارنة بشكل صحيح بغض النظر عن الكميات الفعلية في المخزون.

جرّب بنفسك

#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;
}

جميع دروس Logic & Flow