Сортировка двумерного массива - C# (178775)

Узнай цену своей работы

Формулировка задачи:

Результаты поиска не удовлетворили

Суть программы:

  • Пользователь задаёт размерность квадратной матрицы
  • Каждому элементу матрицы присваивается случайное значение [0, 10] включительно
  • Перебираются элемента каждого отдельного столбца
  • Элемент с наибольшим значением ставится на главную диагональ

    если там уже есть элемент, меняются местами

  • Выводится отсортированная матрица
Вопрос: почему выводится матрица в изначальном виде, не сортируется? Как исправить?

В переменной

max

сохраняем значение максимального элемента, чтобы потом переопределить в гл.диагонали

 public void matrize ()
        {
            Random random = new Random();
            int k;
            string s;
            int rand;
            
            do //retry the request until the user enters the number
            {
                Console.Clear();
                Console.WriteLine("Enter the size of matrix");
 
                s = Console.ReadLine();
            } while (!int.TryParse(s, out k));
            int[,] matrix = new int[k, k];
            Console.WriteLine("The matrix before edit: ");
            for (int i = 0; i < k; i++)
            {
                for (int j = 0; j < k; j++)
                {
                    rand = random.Next(0, 10); // Заполняем матрицу случайными числами
                    matrix[i, j] = rand;
                    Console.Write(matrix[i, j] + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine("The matrix after edit: ");
            #region
 
            for (int j = 0; j != k; j++)
            {
                for (int i = 0; i != k; i++)
                {
                    int max = matrix[0, 0]; //задали максимальное значение эл-та
                    if (matrix[i, j] < max)
                    {
                        //если эл-т проверки < максимального проходим дальше
                    }
                    else if (matrix[i, j] > max)
                    {
                        // если элемент проверки больше максимального
                        // максимальному эл-ту передаётся значение эл-та
                        max = matrix[i, j];
                        matrix[i, j] = max;
                    }
                    else if (matrix[i, j] == max)
                    {
                        //если эл-т проверки равен максимальному
                        matrix[i, j] = max;
                        max = matrix[i, j];
                    }
                    else
                    {
                        Console.WriteLine("эй, пацан, дичь какая-то происходит!");
                    }
                }
 
            }

Решение задачи: «Сортировка двумерного массива»

textual
Листинг программы
internal class Matrix
  {
    private const int MinValue = 0;
    private const int MaxValue = 10;
    private static int[][] GetMatrixWithRandomValues(int size)
    {
      var maxtrix = new int[size][];
      for (int i = 0; i < maxtrix.Length; i++)
      {
        maxtrix[i] = new int[size];
        for (int j = 0; j < maxtrix[i].Length; j++)
        {
          var random = new Random();
          maxtrix[i][j] = random.Next(MinValue, MaxValue);
          Thread.Sleep(50);
        }
      }
      return maxtrix;
    }
 
    private static int[][] Handle(int[][] oldMatrix)
    {
      for (int i = 0; i < oldMatrix.Length; i++)
      {
        var max = oldMatrix[i].Max();
        if(oldMatrix[i][i] == max)
          continue;
        var maxPositionIndex = oldMatrix[i].ToList().IndexOf(max);
        var val = oldMatrix[i][maxPositionIndex];
        oldMatrix[i][maxPositionIndex] = oldMatrix[i][i];
        oldMatrix[i][i] = val;
      }
      return oldMatrix;
    }
 
    private static void DisplayMatrix(int[][] matrix)
    {
      foreach (var t in matrix)
      {
        for (int j = 0; j < t.Length; j++)
        {
          Console.Write(t[j]);
        }
        Console.WriteLine();
      }
    }
 
    private static void DisplayStepByStep(int[][] sourceMatrix)
    {
      Console.WriteLine("Исходная матрица:");
      DisplayMatrix(sourceMatrix);
      Console.WriteLine("Обработанная матрица:");
      DisplayMatrix(Handle(sourceMatrix));
    }
 
    internal static void DisplayStepByStep()
    {
      var matrix = GetMatrixWithRandomValues(10);
      DisplayStepByStep(matrix);
    }
  }

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


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

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

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