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.
Desafio
FácilConclua seu sistema de acompanhamento de inventory implementando um recurso abrangente de relatório de inventory. Esta lição final demonstra como iterar por um map inteiro e apresentar todos os dados armazenados em um formato limpo e organizado.
Comece com o seguinte inventory:
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};Seu programa deve:
- Gerar um relatório completo de inventory que exiba todos os items e suas quantities atuais
- Calcular e exibir o número Total de items diferentes no inventory
- Calcular e exibir a quantity Total de todos os items combinados
- Identificar e exibir o item com a maior quantity
- Identificar e exibir o item com a menor quantity
Use o seguinte formato exato de saída:
Cabeçalho do relatório de inventory:
===== INVENTORY REPORT =====Todos os items (em ordem alfabética):
apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15Estatísticas de resumo:
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)Use um loop for baseado em intervalo para iterar por todo o map de inventory. Para cada par de chave-valor, acesse o nome do item com pair.first e a quantity com pair.second. O map mantém automaticamente a ordem alfabética durante a iteração, portanto nenhuma classificação adicional é necessária.
Para encontrar o item com a menor quantity, inicialize sua variável lowestQuantity com INT_MAX (o maior valor inteiro possível, disponível após incluir <climits>). Isso garante que a quantity do primeiro item será sempre menor que o valor inicial, fazendo com que a comparação funcione corretamente independentemente das quantities reais no inventory.
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
1Ponteiros e Memória
O que é um Ponteiro?Operador de EndereçoOperador de DesreferenciaçãoPonteiros NulosPonteiros e ArraysMemória Dinâmica com 'new'Liberando Memória com 'delete'Recapitulação - Prática com Ponteiros2Vetores (Arrays Dinâmicos)
Introdução ao std::vectorCriando um VetorAdicionando ElementosAcessando ElementosTamanho do VetorIterando com um Loop ForLoop For Baseado em IntervaloRemovendo ElementosRecapitulação - Operações com Vetores5Projeto: Ferramenta de Inventário
Configuração do ProjetoAdicionando e Atualizando Itens3Projeto: Ferramenta de Lista de Tarefas
Visão Geral do ProjetoAdicionando uma TarefaPratique por conta própria: Compilador de C++ online