Impression du rapport d'inventaire
Fait partie de la section Logique et Flux du Journey C++ de Coddy — leçon 34 sur 56.
Défi
FacileComplétez votre système de suivi d'inventaire en implémentant une fonctionnalité de rapport d'inventaire complet. Cette dernière leçon démontre comment itérer à travers une map entière et présenter toutes les données stockées dans un format propre et organisé.
Commencez avec l'inventaire suivant :
map<string, int> inventory = {
{"apples", 50},
{"bananas", 30},
{"oranges", 25},
{"grapes", 40},
{"strawberries", 15}
};Votre programme doit :
- Générer un rapport d'inventaire complet qui affiche tous les articles et leurs quantités actuelles
- Calculer et afficher le nombre total d'articles différents dans l'inventaire
- Calculer et afficher la quantité totale de tous les articles combinés
- Identifier et afficher l'article ayant la quantité la plus élevée
- Identifier et afficher l'article ayant la quantité la plus basse
Utilisez exactement le format de sortie suivant :
En-tête du rapport d'inventaire :
===== INVENTORY REPORT =====Tous les articles (par ordre alphabétique) :
apples: 50
bananas: 30
grapes: 40
oranges: 25
strawberries: 15Statistiques récapitulatives :
===== SUMMARY =====
Total items: 5
Total quantity: 160
Highest stock: apples (50)
Lowest stock: strawberries (15)Utilisez une boucle for basée sur une plage (range-based for loop) pour itérer à travers toute la map d'inventaire. Pour chaque paire clé-valeur, accédez au nom de l'article avec pair.first et à la quantité avec pair.second. La map maintient automatiquement l'ordre alphabétique lors de l'itération, donc aucun tri supplémentaire n'est nécessaire.
Pour trouver l'article avec la quantité la plus basse, initialisez votre variable lowestQuantity à INT_MAX (la plus grande valeur entière possible, disponible après avoir inclus <climits> ou <iostream>). Cela garantit que la quantité du tout premier article sera toujours inférieure à la valeur de départ, de sorte que la comparaison fonctionne correctement quelles que soient les quantités réelles dans l'inventaire.
Essayez vous-même
#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;
}Toutes les leçons de Logique et Flux
1Pointeurs et mémoire
Qu'est-ce qu'un pointeur ?Opérateur d'adresseOpérateur de déréférencementPointeurs nulsPointeurs et tableauxMémoire dynamique avec 'new'Libérer la mémoire avec 'delete'Récapitulatif - Pratique des pointeurs2Vecteurs (Tableaux dynamiques)
Introduction à std::vectorCréer un vecteurAjouter des élémentsAccéder aux élémentsTaille d'un vecteurItérer avec une boucle ForBoucle For basée sur l'intervalleSupprimer des élémentsRécapitulatif - Opérations sur les vecteurs5Projet : Outil d'inventaire
Configuration du projetAjout et mise à jour d'articles3Projet : Outil de liste de tâches
Présentation du projetAjouter une tâche