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