2
respostas

[Projeto] [DESAFIO] Sugestão de Resolução (de um jeito um pouco diferente)

Boa tarde!

Fui um pouquinho além do que é pedido.

void CalcMedia()
{
    double[] valores = new double[5];
    double total = 0;

    try
    {
        for (int i = 0; i < valores.Length; i++)
        {
            Console.WriteLine($"Posição: {i + 1}/{valores.Length}");
            Console.Write("Valor: ");
            valores.SetValue(Convert.ToDouble(Console.ReadLine()), i);
        }

        foreach (var item in valores)
        {
            total += item;
        }

        Console.WriteLine($"\nMedia: {total / valores.Length}");
    }
    catch (FormatException)
    { Console.WriteLine("\nERRO: Os valores não podem ser letras, e também não pode ser vazio."); }

}

calcMedia();
2 respostas

André,

É legal você pensar em outra solução.

Mas comparando com a solução do instrutor:

double MediaDaAmostra(double[] amostra)
{
    double media = 0;
    double acumulador=0;

    if ((amostra == null)||(amostra.Length==0))
    {
        Console.WriteLine("Amostra de dados nula ou vazia.");
        return 0;
    }
    else
    {
        for (int i = 0; i < amostra.Length; i++)
        {
            acumulador = acumulador + amostra[i];
        }
        media = acumulador/ amostra.Length;
    }

    return media;
}

Será que é realmente necessário ter duas rotinas de loop (for e foreach)?

[]'s,

Fabio I.

Eu usufrui de duas rotinas de repetição para demonstrar usabilidades semelhantes embora momentos distintos. Em um escopo funcional não seria necessário, ainda mais se estivermos instanciando valores programaticamente para este array.

De qualquer forma, eu pensei em algo mais dinâmico tendo um input manual por intermédio do usuário.

P.s: Corrigi um errinho que percebi agora. O nome do meu método.