1
resposta

resolução do faça como eu fiz.

Dictionary<string, List> vendasCarros = new Dictionary<string, List> {
{ "Bugatti Veyron", new List { 10, 15, 12, 8, 5 } },
{ "Koenigsegg Agera RS", new List { 2, 3, 5, 6, 7 } },
{ "Lamborghini Aventador", new List { 20, 18, 22, 24, 16 } },
{ "Pagani Huayra", new List { 4, 5, 6, 5, 4 } },
{ "Ferrari LaFerrari", new List { 7, 6, 5, 8, 10 } }
};

List numeroVendas = vendasCarros["Ferrari LaFerrari"];

int soma = 0;

foreach (int totalVendas in numeroVendas)
{
soma += totalVendas;
}

int media = soma / numeroVendas.Count;

Console.WriteLine($"O número toal de vendas da Ferrari LaFerrari é de {media}");

1 resposta

Olá, Tiago. Como vai?

O seu código demonstra que você compreendeu muito bem como manipular dicionários e listas no C#, além de utilizar a estrutura de repetição foreach corretamente para somar os valores.

Analisando a sua lógica, notei duas oportunidades de melhoria para deixar o seu código tecnicamente perfeito e evitar comportamentos inesperados.

A primeira é sobre a declaração dos tipos das listas. No C#, quando trabalhamos com listas genéricas, precisamos especificar o tipo de dado que ela vai guardar dentro de sinais de menor e maior. No seu código atual, faltou o <int> após a palavra List.

A segunda é apenas um detalhe na mensagem final. A sua variável calcula a média das vendas, mas o texto do Console.WriteLine diz "O número total de vendas...". Ajustar esse texto vai deixar o resultado do seu programa mais claro.

Veja abaixo o código corrigido e otimizado com essas correções:

Dictionary<string, List<int>> vendasCarros = new Dictionary<string, List<int>> {
    { "Bugatti Veyron", new List<int> { 10, 15, 12, 8, 5 } },
    { "Koenigsegg Agera RS", new List<int> { 2, 3, 5, 6, 7 } },
    { "Lamborghini Aventador", new List<int> { 20, 18, 22, 24, 16 } },
    { "Pagani Huayra", new List<int> { 4, 5, 6, 5, 4 } },
    { "Ferrari LaFerrari", new List<int> { 7, 6, 5, 8, 10 } }
};

List<int> numeroVendas = vendasCarros["Ferrari LaFerrari"];
int soma = 0;

foreach (int totalVendas in numeroVendas)
{
    soma += totalVendas;
}

int media = soma / numeroVendas.Count;
Console.WriteLine($"A média de vendas da Ferrari LaFerrari é de {media}");

Como uma sugestão de boa prática para os seus próximos passos em C#, saiba que a linguagem possui uma ferramenta chamada LINQ (Language Integrated Query). Com ela, você pode substituir todo o bloco do foreach e o cálculo da divisão por apenas um método chamado Average(). O seu cálculo ficaria simples assim:

double mediaComLinq = numeroVendas.Average();

Nota: O método Average() calcula a média retornando um número com casas decimais (double), o que é ideal para médias, pois evita que o C# arredonde o valor para baixo (o que acontece quando dividimos dois números inteiros).

Espero que possa ter lhe ajudado!