Необходимо рассчитать среднее значение в C # из массива - PullRequest
0 голосов
/ 06 сентября 2018

Просто хотел попросить любого специалиста по C # помочь. Я боролся с этим некоторое время и просто не могу понять это. В основном у меня есть массив из текстового файла с 50 числами (целыми числами). Мне нужно взять эти 50 чисел, умножить их на константу и получить среднее значение. Беда в том, что я не могу за всю жизнь понять, как получить среднее из вычисленных чисел, а не только числа из массива. Любая помощь с благодарностью!

Вот мой код:

int[] hours = new int[50];
// populate values code goes here
    int total = 0;
double average = 0;

for (int index = 0; index < hours.Length; index++)
{
    total = total + hours[index];
}
//average = total / numbers.Length; // Integer division int / int = int
average = (double)total / hours.Length;
Console.WriteLine("Total = " + total);
Console.WriteLine("Average = " + average.ToString("N2"));

Полный код здесь .

Ответы [ 3 ]

0 голосов
/ 06 сентября 2018

Другой способ: преобразовать массив часов в список и использовать LINQ:

var hrsList = hours.ToList();
var avr = hrsList.Select(x => x * constantValue).Average();
0 голосов
/ 06 сентября 2018

Вы можете использовать LINQ для усреднения значения:

var avg = hours.DefaultIfEmpty(0).Average(x => x) * constantValue;

.DefaultIfEmpty(0) останавливает .Average() выдачу исключения в пустой список (теперь он будет возвращать 0 в этом случае).

0 голосов
/ 06 сентября 2018
    const int sizeOfNums;   
    int[] hours = new int[sizeOfNums];
    const float amountToMultiply =123.44f;

    //Load up you numbers from text file into hours

    float multipliedAverage = 0.0f;

    for(int i=0; i< sizeOfNums; i++)
    {
        multipliedAverage += hours[i];
    }
    multipliedAverage = (multipliedAverage/ sizeOfNums) * amountToMultiply;
...