Найти среднее арифметическое каждого из столбцов матрицы - C#
Формулировка задачи:
Совсем не знаю как сделать подобное задание , если знаете помогите, только не используйте сложных комбинаций кода и если не сложно оставляйте коментарии пошагово .
Задана действительная матрица размера NхМ. Найти среднее арифметическое каждого из столбцов.
Огромное спасибо.
Решение задачи: «Найти среднее арифметическое каждого из столбцов матрицы»
textual
Листинг программы
using System;
using System.Linq;
namespace ConsoleApplication1
{
class Program
{
const int N = 5; //строки
const int M = 6; //столбцы
static Random rnd = new Random();
static void Main(string[] args)
{
int[,] matrix = new int[N, M]; //Объявляем матрицу
//Заполняем матрицу случайными значениями от -10 до 20
for (int i = 0; i < N; i++)
matrix.SetRow(Enumerable.Range(0, M).Select(x => x = rnd.Next(-10, 20)).ToArray(), i);
//Печатаем матрицу в консоль
for (int i = 0; i < N; i++)
Console.WriteLine(string.Join("\t", matrix.GetRow(i)));
//Находим среднее арифметическое столбцов
var result = Enumerable.Range(0, M).Select(x => matrix.GetColumn(x).Sum() / M);
//Печатаем среднее арифметическое под соответствующим столбцом (округление к меньшему по модулю)
Console.WriteLine();
Console.WriteLine(string.Join("\t", result));
Console.ReadKey(true);
}
}
//Плюшки для облегчения работы с матрицей
public static class ArrayExtensions
{
public static long SetRow<T>(this T[,] array, T[] data, int i)
{
return Enumerable.Range(0, array.GetLength(1)).Select(j => array[i, j] = data[j]).LongCount();
}
public static T[] GetRow<T>(this T[,] data, int i)
{
return Enumerable.Range(0, data.GetLength(1)).Select(j => data[i, j]).ToArray();
}
public static T[] GetColumn<T>(this T[,] data, int i)
{
return Enumerable.Range(0, data.GetLength(0)).Select(j => data[j, i]).ToArray();
}
}
}