1
resposta

[Projeto] Classificação de Produtos

Resolução:


var estoque = new Dictionary<string, Dictionary<string, int>>()
{
    {"Perecível", new Dictionary<string, int>() {
        {"Banana", 10 },
        {"Maçã", 7},
        {"Abacaxi", 21 }
    } },

    {"Não Perecível", new Dictionary<string, int>()
    {
        {"Óleo Vegetal", 18 },
        {"Macarrão", 30 },
        {"Saco de Arroz", 14 }
    } }
};

void main()
{

    foreach (string classificacao in estoque.Keys)
    {
        Console.WriteLine($"\nProduto {classificacao}: \n");
        foreach (string item in estoque[classificacao].Keys)
        {
            Console.WriteLine($"A quantidade de {item} armazenado é {estoque[classificacao][item]}");
        }
    }
    Console.Write("\nPara adicionar um novo item digite 1 para perecível e 2 para não perecível: ");

    if (int.TryParse(Console.ReadLine(), out int resposta1))
    {
        string chaveEstoque;
        if (resposta1 == 1)
            chaveEstoque = "Perecível";
        else if (resposta1 == 2)
            chaveEstoque = "Não Perecível";
        else
        {
            Console.WriteLine("Opção Inválida!");
            return;
        }


        Console.Write($"\nInsira o nome do item: ");
        string item = Console.ReadLine()!;
        if (!string.IsNullOrWhiteSpace(item))
        {
            Console.Write($"\nAgora insira a quantidade que deseja inserir: ");
            if (int.TryParse(Console.ReadLine(), out int resposta3))
            {
                estoque[chaveEstoque].Add(item, resposta3);
                Console.WriteLine("\nItem e quantidade armazenados com sucesso na classificação apontada!");
                Thread.Sleep(4000);
                Console.Clear();
                main();
            }
            else
            {
                Console.WriteLine("\nQuantidade Inválida");
                return;
            }
        }
        else
        {
            Console.WriteLine("\nO campo deve ser preenchido");
            return;
        }
    }
    else
    {
        Console.WriteLine("\nItem Inválido!");
        Thread.Sleep(4000);
        Console.Clear();
        main();
    }
}

main();

1 resposta

Oi, Christopher. Como vai?

Gostei da forma como você organizou os produtos com Dictionary<string, Dictionary<string, int>>, porque isso mostra um bom cuidado em separar as categorias e percorrer os itens com foreach. Também ficou bem legal o uso de int.TryParse() para validar a entrada e evitar problemas durante a execução.

Uma dica interessante para o futuro é usar o método ContainsKey() antes de adicionar um novo item, para evitar erro caso o produto já exista na categoria escolhida. Veja este exemplo:


if (!estoque[chaveEstoque].ContainsKey(item))
{
    estoque[chaveEstoque].Add(item, resposta3);
}
else
{
    Console.WriteLine("Item ja cadastrado.");
}

Neste código, ContainsKey() verifica se a chave já existe no dicionário antes de inserir o item, deixando o cadastro mais seguro.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!