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++ אונליין