Menu
Coddy logo textTech

הדפסת דוח המלאי

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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++ אונליין