using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Desafios
{
internal class Dicionarios
{
public static void Dict()
{
var notasAlunos = new Dictionary<string, Dictionary<string, List<int>>>()
{
{
"Yasmin",
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 } }
}
},
{
"Ariane",
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 } }
}
},
{
"Davi",
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 } }
}
}
};
Console.WriteLine("Notas dos alunos:");
var mediaAlunos = new Dictionary<string, double>(); // Dicionário para armazenar a média de cada aluno
foreach (var aluno in notasAlunos)
{
Console.WriteLine("\n---------------------------------------------");
Console.WriteLine($"Aluno: {aluno.Key}"); //aluno.key contem o nome do aluno
double mediaAluno = 0;
int totalNotas = 0;
foreach (var disciplina in aluno.Value) // aluno.value contem outro dict com suas disciplinas e notas
{
Console.WriteLine($"\nDisciplina: {disciplina.Key}"); //contem o nome da disciplina
Console.WriteLine($"Notas: {string.Join(", ", disciplina.Value)}"); // disciplina.value contem uma lista de notas da disciplina, string.Join exibe as notas separadas por vírgula
double mediaDisciplina = disciplina.Value.Average(); // Calcula a média das notas da disciplina
mediaAluno += mediaDisciplina * disciplina.Value.Count; // Multiplica a média pela quantidade de notas para calcular a média ponderada
totalNotas += disciplina.Value.Count; // Soma a quantidade de notas para calcular a média final do aluno
Console.WriteLine($"\nMédia: {mediaDisciplina:F2}");
}
mediaAluno /= totalNotas;
mediaAlunos[aluno.Key] = mediaAluno;
Console.WriteLine($"\nMédia geral do aluno {aluno.Key}: {mediaAluno:F2}\n");
Console.WriteLine("\n---------------------------------------------");
}
}
}
}