Menu
Coddy logo textTech

Recap - Manage Warehouse

Parte de la sección Lógica y Flujo del Journey de C# de Coddy — lección 54 de 66.

challenge icon

Desafío

Intermedio

Crea un sistema de gestión de inventario de almacén usando diccionarios. Tu tarea es implementar el método ManageWarehouse que realiza las siguientes operaciones:

  1. Primero, imprime todos los artículos y sus cantidades en el formato: "Item: [item], Quantity: [quantity]"
  2. Verifica si existe "apples" en el inventario e imprime: "Apples in stock: [True/False]"
  3. Añade 10 a la cantidad de "bananas" si existe (usa modificación directa del valor)
  4. Elimina cualquier artículo que tenga cantidad 0
  5. Imprime el número total de artículos distintos en el almacén
  6. Finalmente, devuelve el diccionario de inventario actualizado

Pruébalo tú mismo

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

class Program
{
    public static Dictionary<string, int> ManageWarehouse(Dictionary<string, int> inventory)
    {
        // Tu código aquí
        
        return inventory;
    }
    
    static void Main(string[] args)
    {
        Dictionary<string, int> inventory = new Dictionary<string, int>();
        
        // Lee la primera línea para verificar si tiene formato JSON
        string firstLine = Console.ReadLine();
        
        // Verifica si la entrada está en formato JSON
        if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
        {
            try
            {
                // Procesa la entrada JSON
                string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
                
                // Divide por comas que no estén dentro de comillas
                string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
                string[] entries = Regex.Split(jsonContent, pattern);
                
                foreach (string entry in entries)
                {
                    // Extrae la clave y el valor usando 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}");
        }
    }
}

Todas las lecciones de Lógica y Flujo