Суть задачи проста -
нужно создать проект по шаблону Console Application(.NET Core). Создать анонимный метод, который принимает в качестве аргумента массив делегатов и возвращает среднее арифметическое возвращаемых значений методов сообщенных с делегатами в массиве. Методы, сообщенные с делегатами из массива, возвращают случайное значение типа int. Мое решение:using System;
namespace ConsoleApp44
{
public delegate int Number();
public delegate int MediumCalc(Number[] arrayX);
class Program
{
public static int Randomizer()
{
Random rand = new Random();
return rand.Next(1, 10);
}
static void Main(string[] args)
{
Number[] numArr = new Number[5];
for(int i = 0; i < numArr.Length; i++)
{
numArr[i] = Randomizer;
Console.Write(" " + numArr[i].Invoke() + " ");
}
Console.WriteLine();
MediumCalc mediumCalc = delegate (Number[] arrayX)
{
int sum = 0;
for (int i = 0; i < arrayX.Length; i++)
{
sum += arrayX[i]();
}
return ((sum) / (arrayX.Length));
};
Console.WriteLine(mediumCalc(numArr));
Console.ReadKey();
}
}
}
Но возникает проблема- в результате он выдает не правильное сред. арифметическое значение.
Допустим если метод
Randomizer() "выплюнул" 5 чисел -
{6, 8, 6, 3, 5}
А
mediumCalc(numArr) возвращает
{ 3 }.
Что совершенно не логично с моей точки зрения
( (6 + 8 + 6 +3 + 5) / (5) != 3)Подскажите может я что то где то накосячил или напутал!