Menu
CoddyTech

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

جزء من قسم المنطق وتدفق التنفيذ في رحلة C++ على Coddy. الدرس 34 من 56.

challenge icon

التحدي

سهل

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

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

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 مبنية على النطاق للتكرار عبر خريطة المخزون بالكامل. لكل زوج من مفتاح وقيمة، استخدم pair.first للوصول إلى اسم العنصر وpair.second للوصول إلى الكمية. تحافظ الخريطة تلقائيًا على الترتيب الأبجدي أثناء التكرار، لذا لا حاجة إلى أي فرز إضافي.

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

جرّب بنفسك

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

جميع دروس المنطق وتدفق التنفيذ

تدرّب بنفسك: مترجم C++ عبر الإنترنت