Другие языки программирования и технологии

Как отсортировать по возростанию 2-й массив в С# ?

Сгенерировать матрицу случайных вещественных чисел. Вычислить среднее арифметическое элементов, расположенных в заштрихованной области. Сформировать и вывести в консоль отсортированный по возрастанию массив элементов матрицы, значения которых меньше вычисленного выше среднего арифметического.
using System;

class program
{
public static void Main()
{
//количество строк и столбцов матрицы
//==========
int rows, cols;
Console.Write("Количество строк в матрице: ");
rows = Convert.ToInt32(Console.ReadLine());
Console.Write("Количество столбцов в матрице: ");
cols = Convert.ToInt32(Console.ReadLine());

//это матрица
//==========
double[,] matrix = new double[rows, cols];

//это генератор случайных чисел
//==========
Random rand = new Random();

//генерация матрицы случайными числами
//==========
for (int k = 0; k < rows; k++)
for (int j = 0; j < cols; j++)
matrix[k, j] = rand.NextDouble() * 100;

//превратим матрицу в одномерный массив
//==========
int index = 0;
double[] modMatrix = new double[cols * rows];
for (int k = 0; k < rows; k++)
{
for (int j = 0; j < cols; j++)
{
modMatrix[index] = matrix[k, j];
index++;
}
}

//сортировка одномерного массива
//==========
Array.Sort(modMatrix);

//в задании не указан диапазон матрицы, для вычисления среднего значения
//поэтому я беру в качастве диапазона вторую строку
Console.WriteLine("Значения элементов второй строки: ");
double average = 0;
for (int k = 0; k < cols; k++)
{
Console.WriteLine("{0}-й\t{1}", k, matrix[1, k]);
average += matrix[1, k];
}

average /= cols;
Console.WriteLine("\nСреднее арифметическое 2-й строки равно {0}\n", average);

//теперь остается только вывести значения массива modMatrix значения которых < averrage
Console.WriteLine("Требуемый массив: ");
for (int k = 0; k < modMatrix.Length; k++)
{
if (modMatrix[k] < average)
Console.WriteLine(modMatrix[k]);
else
break;
}
}
}
Евгений Долженков
Евгений Долженков
1 791
Лучший ответ

Похожие вопросы