using System;
using System.Collections.Generic;
class Program {
static void Main() {
var matrix = new int[5, 8];
var rand = new Random();
const int n = 3;
var sum = 0.0;
var count = 0;
var list = new List<int>();
for (int i = 0; i < matrix.GetLength(0); ++i) {
for (int j = 0; j < matrix.GetLength(1); ++j) {
matrix[i, j] = rand.Next(1, 100);
var number = string.Format("{0,4}", matrix[i, j]);
if (0 == matrix[i, j] % n) {
list.Add(matrix[i, j]);
sum += matrix[i, j];
++count;
}
Console.Write(number);
}
Console.WriteLine();
}
Console.Write("Elements:");
foreach (var value in list) {
var number = string.Format("{0,3}", value);
Console.Write(number);
}
Console.WriteLine();
Console.WriteLine($"Sum: {sum}");
Console.WriteLine($"Count: {count}");
Console.WriteLine($"Average: {sum / count}");
Console.ReadKey();
}
}
public delegate bool AnyMatch<T>(T x);
static double Find2DAverage(int[,] a, AnyMatch<int> Match)
{
List<int> MatchingElements = new List<int>();
for(int i = 0; i < a.GetLength(0); i++)
for(int j = 0; j < a.GetLength(1); j++)
if (Match(a[i, j]))
MatchingElements.Add(a[i,j]);
return MatchingElements.Average();
}
static void Main(string[] args)
{
int[,] a = {
{ 1, 3 },
{ 6, 8 }
};
Console.WriteLine(Find2DAverage(a, x => x % 3 == 0));
}