1
resposta

[Dúvida] Minha solução para Exibir Média

Consegui chegar no resultado esperado, mas é errado fazer desta forma?

void ExibirMedia()
{
    Console.Write("Qual a banda que você quer ver a média? ");
    string nomeBanda = Console.ReadLine()!;
    
    if (registrarBandas.ContainsKey(nomeBanda))
    {
        foreach (var listaNota in registrarBandas.Values)
        {

            double media = listaNota.Average();
            Console.WriteLine($"A média da banda {nomeBanda} foi: {media}");
        }
    }else
    {
        Console.WriteLine("Banda não encontrada");
    }
    Console.Write("\nAperte uma tecla para voltar ao menu ");
    Console.ReadKey();
    Console.Clear();
    ExibirMenu();
}
1 resposta

Olá Alycia! Como vai?

No seu código, você está percorrendo todas as listas de notas dentro do dicionário registrarBandas mesmo depois de verificar se a banda existe. Isso pode levar a cálculos incorretos, pois você está calculando a média de todas as bandas, mas exibindo apenas o nome da banda que o usuário digitou.

Aqui está uma maneira mais direta de fazer isso, seguindo a lógica apresentada no contexto:

void ExibirMedia()
{
    Console.Write("Qual a banda que você quer ver a média? ");
    string nomeBanda = Console.ReadLine()!;
    
    if (registrarBandas.ContainsKey(nomeBanda))
    {
        List<int> notasDaBanda = registrarBandas[nomeBanda];
        double media = notasDaBanda.Average();
        Console.WriteLine($"\nA média da banda {nomeBanda} é: {media}");
    }
    else
    {
        Console.WriteLine("Banda não encontrada");
    }
    
    Console.Write("\nAperte uma tecla para voltar ao menu ");
    Console.ReadKey();
    Console.Clear();
    ExibirMenu();
}

Neste exemplo, você primeiro verifica se a banda existe no dicionário. Se existir, você obtém a lista de notas dessa banda específica e calcula a média diretamente dessa lista, evitando o loop desnecessário sobre todas as bandas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.