1
resposta

Eu tive uma solução diferente para a questão.

void ExibirMediaDeNotas()
{
    Console.Clear();
    ExibirTituloDaOpcao("Exibindo a média das notas das avaliações.");
    Console.Write("Qual banda deseja escolher? ");
    string nomeDaBanda = Console.ReadLine()!;

    if (bandasRegistradas.ContainsKey(nomeDaBanda))
    {
        if (bandasRegistradas[nomeDaBanda].Capacity != 0)
        {
            double média = bandasRegistradas[nomeDaBanda].Average();
            int nota = (int)média;
            Console.WriteLine($"A banda {nomeDaBanda} possuí a nota {nota} como média.");

        }
        else {
            Console.WriteLine($"A banda {nomeDaBanda} ainda não possui nota.");
        }
    }
    else
    {
        Console.WriteLine($"A banda {nomeDaBanda} não existe ou ainda não foi adicionada.");
    }
    Console.WriteLine("\nDigite alguma tecla para retornar ao menú");
    Console.ReadKey();
    Console.Clear();
    ExibirOpcoesDoMenu();
}

Não sabia sobre poder utilizar o .Average dentro do Console.WriteLine(), então acabei indo por um caminho mais além. Espero que dê uma visão alternativa a alguém

1 resposta

Olá, Leandro. Nesse trecho do seu código:

double média = bandasRegistradas[nomeDaBanda].Average();
            int nota = (int)média;

Você poderia ter deixado simplesmente:

int média = bandasRegistradas[nomeDaBanda].Average();

Caso o valor retornado seja decimal, o próprio C# vai ignorar as casas decimais e pegar somente a parte inteira do valor (Ex.: Se a média retornada pelo Average() for 7,2 ele var ignorar o 0,2 e salvar apenas o 7. O mesmo resultado vai ser obtido mesmo se o retorno da função Average for 7,5 ou 7,9)

Se, ao invés disso você quer arredondar a média usando as regras matemáticas de arredondamento você pode utilizar a função Round() biblioteca Math. Há vários exemplos de como usá-la e vasta documentação dos seus usos e pormenores na documentação do C#.

Para simplificar mais ainda você poderia escrever assim:

//Para exibir a nota com as casas decimais
Console.WriteLine($"A banda {nomeDaBanda} possuí a nota {bandasRegistradas[nomeDaBanda].Average()} como média.");

//Para exibir sem as casas decimais
Console.WriteLine($"A banda {nomeDaBanda} possuí a nota {(int)(bandasRegistradas[nomeDaBanda].Average())} como média.");

Espero ter ajudado.

Henrique Valença