Поменять местами каждые две рядом расположенные строки матрицы - C#
Формулировка задачи:
Дана матрица А[m,n]. Поменять местами каждые две рядом расположенные строки, если максимальные элементы в них имеют одинаковую четность.
если можно с комментариями))
Решение задачи: «Поменять местами каждые две рядом расположенные строки матрицы»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
const int m = 8, n = 4;
Random rnd = new Random();
int[,] A = new int[m, n];
int[] temp = new int[n];
int i, j, max1, max2;
Console.WriteLine("Рандомная матрица:");
for (i = 0; i < m; i++)//Выводим матрицу на консоль и одновременно заполняем ее
{
for (j = 0; j < n; j++)
{
Console.Write("{0,4}", A[i, j] = rnd.Next(10));
}
Console.WriteLine();
}
for (i = 0; i < m-1; i++)
{
max1 = int.MinValue;
max2 = int.MinValue;
for (j = 0; j < n; j++)
{
if (A[i,j] > max1) //ищем максимальное в одном ряду (i)
{
max1 = A[i, j];
}
if (A[i+1,j] > max2) // и ищем максим. в следующ ряду (i+1)
{
max2 = A[i + 1, j];
}
}
if ((max1+max2)%2 == 0) //проверка на четность суммы 2-х максимальных
{ //(сумма 2-х четных или 2-х нечетных - всегда четная)
for (j = 0; j < n; j++)
{
temp[j] = A[i, j]; //меняем по одному значения двух соседних рядов
A[i, j] = A[i + 1, j];
A[i + 1, j] = temp[j];
}
}
}
Console.WriteLine("Результат:");
for (i = 0; i < m; i++)//Выводим результат
{
for (j = 0; j < n; j++)
{
Console.Write("{0,4}", A[i, j]);
}
Console.WriteLine();
}
Console.ReadLine();
}
}
}