Вопрос задан 01.08.2023 в 09:14. Предмет Информатика. Спрашивает Чирков Иван.

С# Дана матрица размера м×n. Упорядочить по возрастанию элементы СТОЛБЦА, содержащего минимальный

элемент матрицы,и по убыванию элементы столбца, содержащего максимальный элемент. Если мин и макс в одном столбце, то ничего не делать!! С#
0 0
Перейти к ответам

Ответы на вопрос

Внимание! Ответы на вопросы дают живые люди. Они могут содержать ошибочную информацию, заблуждения, а также ответы могут быть сгенерированы нейросетями. Будьте внимательны. Если вы уверены, что ответ неверный, нажмите кнопку "Пожаловаться" под ответом.
Отвечает Умрихин Слава.
Using System;
  class Program {    static void Main() {        int n = 5, m = 12, imin = 0, imax = 0, max = 0, min = 100;
        var a = new Int32[n, m];
        var random = new Random();
        for (var i = 0; i < n; i++, Console.WriteLine())
            for (var j = 0; j < m; 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 < n - 1; i++)
                for (int j = i + 1; j < n; 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 = 0; i < n - 1; i++)
                for (int j = i + 1; j < n; j++)
                    if (a[i, imax] < a[j, imax]) {
                        var temp = a[i, imax]; a[i, imax] = a[j, imax]; a[j, imax] = temp;
                    }
            for (var i = 0; i < n; i++, Console.WriteLine())
                for (var j = 0; j < m; j++)
                    Console.Write("{0,4}", a[i, j]);
        }
        Console.Read();
    }
}

Пример:


0 0
Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.

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

Ниже приведен пример кода, который выполняет указанные действия:

csharp
using System; class Program { static void Main() { int[,] matrix = { { 5, 10, 2, 8 }, { 3, 7, 9, 4 }, { 1, 6, 12, 11 } }; SortColumns(matrix); Console.WriteLine("Матрица после упорядочивания столбцов:"); PrintMatrix(matrix); } static void SortColumns(int[,] matrix) { int rows = matrix.GetLength(0); int cols = matrix.GetLength(1); int minColumn = -1; int maxColumn = -1; int minValue = int.MaxValue; int maxValue = int.MinValue; // Находим минимальный и максимальный элементы матрицы и их столбцы for (int j = 0; j < cols; j++) { for (int i = 0; i < rows; i++) { int currentElement = matrix[i, j]; if (currentElement < minValue) { minValue = currentElement; minColumn = j; } if (currentElement > maxValue) { maxValue = currentElement; maxColumn = j; } } } if (minColumn == maxColumn) { // Если минимальный и максимальный элементы находятся в одном столбце, ничего не делаем return; } // Упорядочиваем столбец с минимальным элементом по возрастанию SortColumnAscending(matrix, minColumn); // Упорядочиваем столбец с максимальным элементом по убыванию SortColumnDescending(matrix, maxColumn); } static void SortColumnAscending(int[,] matrix, int column) { int rows = matrix.GetLength(0); // Сортируем столбец с минимальным элементом по возрастанию for (int i = 0; i < rows - 1; i++) { for (int j = i + 1; j < rows; j++) { if (matrix[i, column] > matrix[j, column]) { int temp = matrix[i, column]; matrix[i, column] = matrix[j, column]; matrix[j, column] = temp; } } } } static void SortColumnDescending(int[,] matrix, int column) { int rows = matrix.GetLength(0); // Сортируем столбец с максимальным элементом по убыванию for (int i = 0; i < rows - 1; i++) { for (int j = i + 1; j < rows; j++) { if (matrix[i, column] < matrix[j, column]) { int temp = matrix[i, column]; matrix[i, column] = matrix[j, column]; matrix[j, column] = temp; } } } } static void PrintMatrix(int[,] matrix) { int rows = matrix.GetLength(0); int cols = matrix.GetLength(1); for (int i = 0; i < rows; i++) { for (int j = 0; j < cols; j++) { Console.Write(matrix[i, j] + " "); } Console.WriteLine(); } } }

Обратите внимание, что в приведенном примере я использовал фиктивную матрицу размера 3x4 для демонстрации. Вы можете заменить эту матрицу на свою и выполнить код для своих данных.

0 0

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Задать вопрос