Дана целочисленная матрица размера N×M. Упорядочить по возрастанию элементы столбца, содержащего минимальный элемент матрицы, и по убыванию элементы столбца, содержащего максимальный элемент матрицы. Если минимум и максимум находятся в одном столбце, то ничего не делать. Полученную матрицу вывести на экран. C#

Ответы

Ответ дал: Giammy
0
using System;
    class Program
        static void Main()
        {
            int n = 5;
            int m = 10;
            var a = new Int32[n, m];
            int imin = 0;
            int imax = 0;
            int max = 0;
            int min = 100;
            var random = new Random();
            for (var i = 0; i < a.GetLength(0); i++, Console.WriteLine())
                for (var j = 0; j < a.GetLength(1); j++)
                {
                    a[i, j] = random.Next(100);
                    if (max < a[i, j])
                    {
                      max = a[i, j];
                      imax = j;
                    }
                    if (min > a[i, j])
                    {
                      min = a[i, j];
                      imin = j;
                    }
                    Console.Write("{0,4}", a[i, j]);
                }
            if (imin == imax) 
               Console.WriteLine("Элементы находятся в одном столбце");
            else
            {
                    Console.WriteLine();
            for (int i = 0; i < a.GetLength(0) -1; i++)
                for (int j = i + 1; j < a.GetLength(0); j++)
                    if (a[i,imin] > a[j, imin])
                    {
                        var temp = a[i, imin];
                        a[i, imin] = a[j, imin];
                        a[j, imin] = temp;
                    }
            for (int i = a.GetLength(0) - 2; i >=0 ; i--)
                for (int j = i; j < a.GetLength(0)-1; j++)
                    if (a[j, imax] < a[j+1, imax])
                    {
                        var temp = a[i, imin];
                        a[j, imax] = a[j+1, imax];
                        a[j + 1, imax] = temp;
                    }
            for (var i = 0; i < a.GetLength(0); i++, Console.WriteLine())                      
                for (var j = 0; j < a.GetLength(1); j++)
                    Console.Write("{0,4}", a[i, j]);
            }
        Console.Read();
    }
    }
Вас заинтересует