Расположение по диагонали в двухмерном массиве - 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++);
                }
            //в исходном массиве на главной диагонали выставлены максимальные элементы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.4 из 5
Похожие ответы