1
resposta

Resolução do Projeto final, caso encontre uma redundância pode comentar!

Algumas implementações para melhorar o código:

  1. Adicionei um print que mostra também as notas, exemplo: "10, 20, 30 e 40."
void MediaDaBanda()
{
    // Exibir o titulo; 
    // Perguntar ao usuário qual a banda q ele deseja ver a nota; 
    // Consutlar se de fato a banda está presente no banco de dados;
    // Realizar o calculo e exibir o resultado;

    Console.Clear();
    ExibirTituloDaOpcao("Calculadora de Média das Bandas");
    Console.Write("Qual a banda que você deseja ver a média? ");
    string bandaEscolhida = Console.ReadLine()!;
    if (bandasRegistradas.ContainsKey(bandaEscolhida))
    {
        List<int> notasDasBandas = bandasRegistradas[bandaEscolhida]; //pegar as notas da chave especificada 
        Console.WriteLine($"\nAs notas da banda {bandaEscolhida} são:");
        int count = 0;
        foreach (int nota in notasDasBandas) 
        {
            count++;

            if (count < notasDasBandas.Count)
            {
                Console.Write(nota + ", ");
            }
            else
            {
                if (notasDasBandas.Count > 1) //Se houver mais de um valor, isso imprime "e" seguido do último valor e um ponto final. Por exemplo, "10, 20, 30 e 40."
                {
                    Console.Write("e " + nota + ".");
                }
                else
                {
                    Console.Write(nota + "."); //Se houver apenas um valor na lista, isso imprime apenas o valor seguido de um ponto final. Por exemplo, "10."
                }
            }
        }

        Console.WriteLine($"\n\nSua média é de {notasDasBandas.Average()}.");
        Console.WriteLine("\n>>> Digite qualquer tecla para voltar ao menu: ");
        Console.ReadKey();
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
    else
    {
        Console.WriteLine($"\nA banda {bandaEscolhida} não consta no banco de dados!");
        Console.WriteLine("\n>>> Digite qualquer tecla para voltar ao menu: ");
        Console.ReadKey();
        Console.Clear();
        ExibirOpcoesDoMenu();
    }
}
1 resposta

Olá, Gabriel!

Pelo que vi, você fez um ótimo trabalho implementando a função MediaDaBanda(). A maneira como você lidou com a exibição das notas é muito intuitiva e fácil de entender, parabéns!

No entanto, notei que a função ExibirOpcoesDoMenu() é chamada no final de cada bloco condicional. Isso é um pouco redundante e pode dificultar a manutenção do código no futuro. Uma maneira de simplificar isso seria chamar a função ExibirOpcoesDoMenu() uma vez, após os blocos condicionais. Aqui está um exemplo de como isso pode ser feito:

void MediaDaBanda()
{
    // ... código anterior ...

    if (bandasRegistradas.ContainsKey(bandaEscolhida))
    {
        // ... código anterior ...
    }
    else
    {
        // ... código anterior ...
    }

    // Chame a função uma vez, após os blocos condicionais.
    ExibirOpcoesDoMenu();
}

Dessa forma, a função ExibirOpcoesDoMenu() será chamada independentemente do resultado da condição, reduzindo a redundância.

Espero ter ajudado e bons estudos!