재고 보고서 출력
Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 34번째.
챌린지
쉬움포괄적인 inventory report 기능을 구현하여 inventory 추적 시스템을 완성하세요. 이 마지막 레슨에서는 전체 map을 Iterate하고 저장된 모든 data를 깔끔하고 체계적인 형식으로 표시하는 방법을 보여 줍니다.
다음 inventory로 시작하세요:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};프로그램은 다음을 수행해야 합니다:
- 모든 items와 현재 quantity를 표시하는 완전한 inventory report를 생성합니다
- inventory에 있는 서로 다른 items의 총 개수를 계산하고 표시합니다
- 모든 items의 총 quantity를 계산하고 표시합니다
- quantity가 가장 높은 item을 식별하고 표시합니다
- quantity가 가장 낮은 item을 식별하고 표시합니다
다음의 정확한 출력 형식을 사용하세요:
Inventory report header:
===== INVENTORY REPORT =====모든 items(알파벳순):
apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15Summary statistics:
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)range-based for loop를 사용하여 전체 inventory map을 Iterate하세요. 각 key-value pair에 대해 item 이름에는 pair.first를, quantity에는 pair.second를 사용하세요. map은 Iterate할 때 자동으로 알파벳순을 유지하므로 추가 sorting이 필요하지 않습니다.
quantity가 가장 낮은 item을 찾으려면 lowestQuantity variable을 INT_MAX(가능한 가장 큰 정수 값이며, <climits>를 include한 후 사용할 수 있음)로 Initialize하세요. 이렇게 하면 첫 번째 item의 quantity는 항상 시작 값보다 작아지므로 inventory의 실제 quantity와 관계없이 comparison이 올바르게 작동합니다.
직접 해보기
#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++ 컴파일러