Ошибка в использовании делегатов. В выводе элементов массива одни числа, а в вычислении среднего арифметического другие
Создайте анонимный метод, который принимает в качестве аргумента массив делегатов и возвращает среднее арифметическое возвращаемых значений методов, сообщенных с делегатами в массиве. Методы, сообщенные с делегатами из массива, возвращают случайное значение типа int.
class Program
{
delegate int MyDelegate();
delegate double MyDel(MyDelegate[] a);
static int GetRandom()
{
return new Random().Next(1, 10);
}
static void Main()
{
Console.WriteLine("Введите число элементов массива: ");
int n = int.Parse(Console.ReadLine());
Console.WriteLine(new string('-', 50));
var array = new MyDelegate[n];
for (int i = 0; i < array.Length; i++)
{
array[i] = () => new MyDelegate(GetRandom)();
}
MyDel d = delegate(MyDelegate[] a)
{
double sr = 0;
for (int i = 0; i < a.Length; i++)
{
sr += a[i]();
}
return sr / array.Length;
};
Console.WriteLine("Среднее ариф = {0}", d(array));
Console.WriteLine(new string('-', 50));
for (int i = 0; i < array.Length; i++)
{
Console.WriteLine(array[i]());
}
}
}
Ответы (1 шт):
Автор решения: twintwinterrors
→ Ссылка
Чтобы получить на экран список чисел, использованных для вычисления результата, нужно было добавить в метод GetRandom() вывод на консоль сгенерированного значения.
static int GetRandom()
{
Random random = new Random();
int number = random.Next(1,10);
Console.WriteLine(number);
return number;
}