
Вопрос задан 01.08.2023 в 09:14.
Предмет Информатика.
Спрашивает Чирков Иван.
С# Дана матрица размера м×n. Упорядочить по возрастанию элементы СТОЛБЦА, содержащего минимальный
элемент матрицы,и по убыванию элементы столбца, содержащего максимальный элемент. Если мин и макс в одном столбце, то ничего не делать!! С#

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

Отвечает Умрихин Слава.
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();
}
}
Пример:
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();
}
}
Пример:





Отвечает нейросеть ChatGpt. Будьте внимательны, ответы нейросети могут содержать ошибочные или выдуманные данные.
Для выполнения данной задачи в C#, вам потребуется написать функцию, которая найдет минимальный и максимальный элементы матрицы и их столбцы, а затем упорядочит соответствующие столбцы. Для упорядочивания элементов столбца можно использовать алгоритм сортировки, например, сортировку пузырьком или сортировку слиянием.
Ниже приведен пример кода, который выполняет указанные действия:
csharpusing 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 для демонстрации. Вы можете заменить эту матрицу на свою и выполнить код для своих данных.


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

Информатика 2132

Информатика 63

Информатика 14

Информатика 32

Информатика 19

Информатика 15

Информатика 175

Информатика 31

Информатика 48
Последние заданные вопросы в категории Информатика
Предметы
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili