1
resposta

[Sugestão] Minha Resolução

void ExibirTitulo(string titulo)
{
    int quantidadeLetras = titulo.Length;
    string asteriscos = string.Empty.PadLeft(quantidadeLetras, '*');
    Console.WriteLine(asteriscos);
    Console.WriteLine(titulo);
    Console.WriteLine(asteriscos);
}

var notasAlunos = new Dictionary<string, Dictionary<string, List<int>>>()
{
    {"Ana", new Dictionary<string, List<int>>() {
        {"C#", new List<int>{8, 7, 6 } },
        {"Java", new List<int>{7, 6, 5 } },
        {"Python", new List<int>{9, 8, 8 } }
    }},
    {"Maria", new Dictionary<string, List<int>> {
        {"C#", new List<int>{6, 5, 4 } },
        {"Java", new List<int>{8, 7, 6 } },
        {"Python", new List<int>{6, 10, 5 } }
    }},
    {"Luiza", new Dictionary<string, List<int>> {
        {"C#", new List<int>{2, 3, 10 } },
        {"Java", new List<int>{8, 8, 8 } },
        {"Python", new List<int>{7, 7, 7 } }
    }}
};

void ExibirMediaDasNotas ()
{
    ExibirTitulo("Média das notas dos alunos");
    foreach (string aluno in notasAlunos.Keys)
    {
        Console.Write($"\n{aluno}: \n");
        foreach (string linguagem in notasAlunos[aluno].Keys)
        {
            double media = notasAlunos[aluno][linguagem].Average();
            Console.WriteLine($"Média de {linguagem}: {media:F2}");
        }
    }
}


ExibirMediaDasNotas();
1 resposta

Oi, Christopher! Como vai?

Agradeço por compartilhar.

Gostei da sua solução, você estruturou muito bem o uso de dicionários aninhados, o que mostra um bom entendimento da organização de dados mais complexos. Também foi uma boa escolha separar a lógica em métodos como o ExibirTitulo, deixando o código mais organizado e reutilizável. A forma como você percorre os alunos e linguagens com foreach ficou clara e funcional.

Continue praticando esse tipo de estrutura, pois isso fortalece muito sua base em lógica e organização de código.

Dica: você pode melhorar ainda mais deixando o método ExibirMediaDasNotas mais flexível, recebendo o dicionário como parâmetro. Assim, você reaproveita o método em outros cenários. Faça isso alterando a assinatura do método para receber o Dictionary e usando esse parâmetro dentro do foreach.

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