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

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

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

challenge icon

التحدي

سهل

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

ابدأ باستخدام inventory التالية:

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

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

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

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

رأس تقرير inventory:

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

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

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

إحصاءات summary:

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

استخدم حلقة for تستند إلى النطاق للتكرار عبر map inventory بأكملها. لكل زوج من المفتاح والقيمة، يمكنك الوصول إلى اسم العنصر باستخدام pair.first وإلى الكمية باستخدام pair.second. تحافظ map تلقائيًا على الترتيب الأبجدي أثناء التكرار، لذلك لا حاجة إلى إجراء فرز إضافي.

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

جرّب بنفسك

#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

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