Поменять местами минимальный и максимальный элемент матрицы - C#
Формулировка задачи:
Нужно поменять местами максимальный и минимальный элементы двумерного массива. Нашел примеры подобной операции с одномерным массивом, пока не получается воспроизвести это на двумерном. Нужно работать с индексами этих элементов?
using System;
namespace Abcd
{
class Program
{
static void Main()
{
Console.Write("Введите длину массива: ");
int n = Convert.ToInt32(Console.ReadLine()); // Считываем строку, переводим в число.
Console.Write("Введите ширину массива: ");
int m = Convert.ToInt32(Console.ReadLine());
int[,] matrix = new int[n, m]; //Объявляем массив строк длиной n и шириной m (которую ввёл пользователь)
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
Console.Write("Введите элемент №{0}{1}:\r\n ", i, j);
matrix[i, j] = Convert.ToInt32(Console.ReadLine()); //Заполняем его
}
Console.WriteLine("Массив состоит из следующих элементов:");
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
Console.WriteLine(matrix[i, j]);
}
int min = matrix[0, 0];
int max = matrix[0, 0];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
{
if (matrix[i, j] > max)
{
max = matrix[i, j];
}
if (matrix[i, j] < min)
{
min = matrix[i, j];
}
}
Console.WriteLine("Максимальный элемент массива {0}", max);
Console.WriteLine("Минимальный элемент массива элемент массива {0}", min);
Console.ReadLine();
}
}
}Решение задачи: «Поменять местами минимальный и максимальный элемент матрицы»
textual
Листинг программы
using System;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
int[,] arr = new int[5, 5];
Random random = new Random();
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
arr[i, j] = random.Next(0, 50);
}
}
PrintArray(arr);
int minI = 0, minJ = 0, maxI = 0, maxJ = 0;
for (int i = 0; i < arr.GetLength(0); i++)
{
for (int j = 0; j < arr.GetLength(1); j++)
{
if (arr[minI, minJ] > arr[i, j])
{
minI = i;
minJ = j;
}
else if (arr[maxI, maxJ] < arr[i, j])
{
maxI = i;
maxJ = j;
}
}
}
Console.WriteLine("Минимальный: {0}\tМаксимальный: {1}", arr[minI, minJ], arr[maxI, maxJ]);
var tmp = arr[maxI, maxJ];
arr[maxI, maxJ] = arr[minI, minJ];
arr[minI, minJ] = tmp;
PrintArray(arr);
Console.ReadKey();
}
static void PrintArray(int[,] array)
{
for (int i = 0; i < array.GetLength(0); i++)
{
for (int j = 0; j < array.GetLength(1); j++)
{
Console.Write(array[i, j] + " ");
}
Console.WriteLine();
}
Console.WriteLine();
}
}
}