Сортировка двумерного массива - 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);
}
}