Расположение по диагонали в двухмерном массиве - C#
Формулировка задачи:
Есть двухмерный массив. Заполнил его случайными числами. Необходимо путем перестановки элементов квадратной вещественной матрицы добиться того, чтобы её максимальный элемент находился в левом верхнем углу, следующий по величине – в позиции (2, 2), следующий по величине – в позиции (3, 3) и т. д., заполнив, таким образом, всю главную диагональ. Как это сделать, не могу понять =(
namespace Kon2_Pab2 { class Program { static void Main(string[] args) { int[,] A; int N; Console.WriteLine("Cколько строк?"); N = Convert.ToInt16(Console.ReadLine()); int M; Console.WriteLine("Cколько столбцов?"); M = Convert.ToInt16(Console.ReadLine()); A = new int[N, M]; Random r = new Random(); for (int i = 0; i < N; i++) for (int j = 0; j < M; j++) A[i, j] = r.Next(-100, 100); for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) Console.Write(A[i, j] + " "); Console.WriteLine(); }; Console.ReadLine(); } } }
Решение задачи: «Расположение по диагонали в двухмерном массиве»
textual
Листинг программы
int[,] kv = {{1,2,3}, {4,5,6}, {7,8,9}}; List<int> ks= new List<int>(kv.Length); //переносим массив в LIst foreach (int i in kv) ks.Add(i); //сортируем LIst ks = ks.OrderByDescending(x => x).ToList(); int kt = kv.GetLength(0); //выставляем диагональ for (int i=0; i < kt; i++) kv[i, i] = ks.ElementAt(i); int kt1 = 0; //заполняем остальные позиции for (int i = 0; i < kt; i++) for (int j = 0; j < kt; j++) { if (i == j) continue; kv[i, j] = ks.ElementAt(kt+kt1++); } //в исходном массиве на главной диагонали выставлены максимальные элементы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д