Menu
Coddy logo textTech

Récapitulatif - Gérer un entrepôt

Fait partie de la section Logique & Flux du Journey C# de Coddy — leçon 54 sur 66.

challenge icon

Défi

Moyen

Créez un système de gestion d'inventaire d'entrepôt en utilisant des dictionnaires. Votre tâche est d'implémenter la méthode ManageWarehouse qui effectue les opérations suivantes :

  1. Tout d'abord, imprimez tous les articles et leurs quantités au format : "Item: [item], Quantity: [quantity]"
  2. Vérifiez si "apples" existe dans l'inventaire et imprimez : "Apples in stock: [True/False]"
  3. Ajoutez 10 à la quantité de "bananas" si elles existent (utilisez une modification directe de la valeur)
  4. Supprimez tout article qui a une quantité de 0
  5. Imprimez le nombre total d'articles distincts dans l'entrepôt
  6. Enfin, retournez le dictionnaire d'inventaire mis à jour

Essayez vous-même

using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;

class Program
{
    public static Dictionary<string, int> ManageWarehouse(Dictionary<string, int> inventory)
    {
        // Votre code ici
        
        return inventory;
    }
    
    static void Main(string[] args)
    {
        Dictionary<string, int> inventory = new Dictionary<string, int>();
        
        // Lire la première ligne pour vérifier s'il s'agit du format JSON
        string firstLine = Console.ReadLine();
        
        // Vérifier si l'entrée est au format JSON
        if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
        {
            try
            {
                // Traiter l'entrée JSON
                string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Diviser par les virgules qui ne sont pas à l'intérieur de guillemets
                string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
                string[] entries = Regex.Split(jsonContent, pattern);
                
                foreach (string entry in entries)
                {
                    // Extraire la clé et la valeur à l'aide de regex
                    Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
                    if (match.Success)
                    {
                        string keyMatch = match.Groups[1].Value;
                        int valueMatch = int.Parse(match.Groups[2].Value);
                        inventory.Add(keyMatch, valueMatch);
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine($"Error parsing JSON input: {ex.Message}");
                return;
            }
        }
        else
        {
            // Process traditional input format
            int n = int.Parse(firstLine);
            for (int i = 0; i < n; i++)
            {
                string[] parts = Console.ReadLine().Split(':');
                inventory.Add(parts[0], int.Parse(parts[1]));
            }
        }
        
        Dictionary<string, int> result = ManageWarehouse(inventory);
        
        // Print updated inventory
        Console.WriteLine("Updated Inventory:");
        foreach (var item in result)
        {
            Console.WriteLine($"{item.Key}: {item.Value}");
        }
    }
}

Toutes les leçons de Logique & Flux