Menu
CoddyTech

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 estoque implementando um recurso completo de relatório de estoque. 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 estoque:

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

Seu programa deve:

  1. Gerar um relatório completo de estoque que exiba todos os itens e suas quantidades atuais
  2. Calcular e exibir o número total de itens diferentes no estoque
  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 exatamente o seguinte formato de saída:

Cabeçalho do relatório de estoque:

===== 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 estoque. 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 classificaçã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 sempre será menor que o valor inicial, de modo que a comparação funcione corretamente independentemente das quantidades reais no estoque.

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