Menu
Coddy logo textTech

Repaso: Gestionar un almacén

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 del inventario de un almacén utilizando diccionarios. Tu tarea consiste en implementar el método ManageWarehouse que realiza las siguientes operaciones:

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

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

Practica por tu cuenta: Compilador de C# online