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

Помогите с Массивами в С#

Задан двумерный массив чисел (используйте генератор случайных чисел). Отсортируйте каждую нечетную строку по возрастанию, а каждую четную – по убыванию, после чего выведите значение k-го столбца.
Jahongir Beknazarov
Jahongir Beknazarov
202
using System;
using System.Text;

class Program
{

static string BuildArrayString(int[][] array, int numLength)
{
var result = new StringBuilder();
int length = array.GetLength(0);

for (int i = 0; i < length; i++)
{
foreach (var num in array[i])
result.Append(num.ToString().PadLeft(numLength));
result.AppendLine();
}

return result.ToString();
}

static void Main()
{
const int arrayLength = 20;
const int maxNumber = 100;
const int numLength = 3;

var random = new Random();
var array = new int[arrayLength][];

for (int i = 0; i < arrayLength; i++)
{
array[i] = new int[arrayLength];
for (int k = 0; k < arrayLength; k++)
array[i][k] = random.Next(maxNumber);
}

Console.WriteLine(BuildArrayString(array, numLength));
Console.Write("Нажмите любую клавишу для сортировки...");
Console.ReadKey(true);
Console.SetCursorPosition(0, 0);

for (int i = 0; i < arrayLength; i++)
{
Array.Sort(array[i]);
if (i % 2 == 1)
Array.Reverse(array[i]);
}

Console.WriteLine(BuildArrayString(array, numLength));
Console.Write($"Укажите номер столбца для вывода (с 1 по {arrayLength}): ");

int numCollumn;
if (int.TryParse(Console.ReadLine(), out numCollumn) && numCollumn > 0 && numCollumn <= arrayLength)
{
numCollumn--;
Console.Write("Результат: ");
for (int i = 0; i < arrayLength; i++)
Console.Write(array[i][numCollumn].ToString().PadLeft(numLength));
Console.WriteLine();
}
else
Console.WriteLine("Указано недопустимое значение!");

Console.WriteLine();
Console.Write("Нажмите любую клавишу для выхода...");
Console.ReadKey(true);
}
}
Николай Смирнов
Николай Смирнов
2 054
Лучший ответ
Jahongir Beknazarov Спасибо, но очень большой код, можно его сделать короче?
Николай Смирнов можно и короче... а ты сможешь объяснить более короткий код?
var arr = new int[N][];
var rand = new Random();
for (int i = 0; i < N; i++) { arr[i] = new int[M]; for (int j = 0; j < M; j++) arr[i][j] = rand.Next(100); }
for (int i = 0; i < N; i++) Array.Sort(arr[i], (x, y) => ((i & 1) == 0) ? y - x : x - y);
for (int i = 0; i < N; i++) Console.WriteLine(arr[i][k]);
Марат Арсланов
Марат Арсланов
24 295
Jahongir Beknazarov К сожалению, код не сработал
Пустое окно