Menu
Coddy logo textTech

Imprimindo o Relatório de Inventário

Parte da seção Lógica & Fluxo do Journey de C++ da Coddy. Lição 34 de 56.

challenge icon

Desafio

Fácil

Conclua seu sistema de controle de inventário implementando um recurso abrangente de relatório de inventário. Esta lição final demonstra como percorrer um mapa inteiro e apresentar todos os dados armazenados em um formato limpo e organizado.

Comece com o seguinte inventário:

map<string, int> inventory = {
    {"apples", 50},
    {"bananas", 30},
    {"oranges", 25},
    {"grapes", 40},
    {"strawberries", 15}
};

Seu programa deve:

  1. Gerar um relatório completo do inventário que exiba todos os itens e suas quantidades atuais
  2. Calcular e exibir o número total de itens diferentes no inventário
  3. Calcular e exibir a quantidade total de todos os itens combinados
  4. Identificar e exibir o item com a maior quantidade
  5. Identificar e exibir o item com a menor quantidade

Use o seguinte formato exato de saída:

Cabeçalho do relatório de inventário:

===== INVENTORY REPORT =====

Todos os itens (em ordem alfabética):

apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15

Estatísticas resumidas:

===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)

Use um loop for baseado em intervalo para percorrer todo o mapa de inventário. Para cada par de chave e valor, acesse o nome do item com pair.first e a quantidade com pair.second. O mapa mantém automaticamente a ordem alfabética durante a iteração, portanto não é necessário fazer nenhuma ordenação adicional.

Para encontrar o item com a menor quantidade, inicialize sua variável lowestQuantity com INT_MAX (o maior valor inteiro possível, disponível após incluir <climits>). Isso garante que a quantidade do primeiro item será sempre menor que o valor inicial, fazendo com que a comparação funcione corretamente, independentemente das quantidades reais no inventário.

Experimente você mesmo

#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;
}

Todas as lições de Lógica & Fluxo

Pratique por conta própria: Compilador de C++ online