Menu
CoddyTech

재고 보고서 출력

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨. 56개 중 34번째.

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++ 컴파일러