Menu
Coddy logo textTech

Impression du rapport d'inventaire

Fait partie de la section Logique et Flux du Journey C++ de Coddy. Leçon 34 sur 56.

challenge icon

Défi

Facile

Terminez votre système de suivi des stocks en implémentant une fonctionnalité complète de rapport d’inventaire. Cette dernière leçon montre comment parcourir une map entière et présenter toutes les données stockées dans un format clair et organisé.

Commencez avec l’inventaire suivant :

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

Votre programme doit :

  1. Générer un rapport d’inventaire complet affichant tous les articles et leurs quantités actuelles
  2. Calculer et afficher le nombre total d’articles différents dans l’inventaire
  3. Calculer et afficher la quantité totale de tous les articles réunis
  4. Identifier et afficher l’article ayant la quantité la plus élevée
  5. Identifier et afficher l’article ayant la quantité la plus faible

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: 15

Statistiques 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 pour parcourir l’intégralité de 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 conserve automatiquement l’ordre alphabétique lors du parcours, aucun tri supplémentaire n’est donc nécessaire.

Pour trouver l’article ayant la quantité la plus faible, initialisez votre variable lowestQuantity à INT_MAX (la plus grande valeur entière possible, disponible après l’inclusion de <climits>). Ainsi, la quantité du tout premier article sera toujours inférieure à la valeur initiale, ce qui garantit que la comparaison fonctionne correctement quelles que soient les quantités réelles présentes 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

Entraînez-vous par vous-même : Compilateur C++ en ligne