הדפסת דוח המלאי
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 34 מתוך 56.
אתגר
קלהשלם את מערכת המעקב אחר המלאי שלך על ידי מימוש תכונה מקיפה לדיווח על המלאי. השיעור האחרון הזה מדגים כיצד לעבור על מפה שלמה ולהציג את כל הנתונים השמורים בפורמט נקי ומסודר.
התחל עם המלאי הבא:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};התוכנית שלך צריכה:
- ליצור דוח מלא על המלאי שמציג את כל הפריטים ואת הכמויות הנוכחיות שלהם
- לחשב ולהציג את המספר הכולל של פריטים שונים במלאי
- לחשב ולהציג את הכמות הכוללת של כל הפריטים יחד
- לזהות ולהציג את הפריט עם הכמות הגבוהה ביותר
- לזהות ולהציג את הפריט עם הכמות הנמוכה ביותר
השתמש בפורמט הפלט המדויק הבא:
כותרת דוח המלאי:
===== 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;
}כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטיםתרגלו בעצמכם: קומפיילר C++ אונליין