Циклический сдвиг строки матрицы в зависимости от чётности минимального элемента - C#
Формулировка задачи:
12. Дана матрица А[m,n]. Если минимальный элемент строки матрицы четный, выполнить циклический сдвиг этой строки вправо, чтобы этот элемент оказался в последнем столбце. Иначе выполнить циклический сдвиг строки влево, чтобы этот элемент оказался в первом столбце.
если можно с комментариями))
Решение задачи: «Циклический сдвиг строки матрицы в зависимости от чётности минимального элемента»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication8 { class Program { static void Main(string[] args) { const int m = 10, n = 5 , x = 20; Random rnd = new Random(); int[,] A = new int[m, n]; int i, j, min, jMin, temp; Console.WriteLine("Рандомная матрица"); for (i = 0; i < m; i++)//Выводим матрицу на консоль и одновременно заполняем ее { for (j = 0; j < n; j++) { Console.Write("{0,4}", A[i, j] = rnd.Next(x)); } Console.WriteLine(); } for (i = 0; i < m; i++) //пербираем все строки { min = int.MaxValue; jMin = 0; for (j = 0; j < n; j++) //ищем миним.эл. строки и его индекс { if (A[i, j] < min) { min = A[i, j]; jMin = j; } } //реализация циклич.сдвига (rotate) //смещаем на одну позицию влево каждый элемент ровно стоко раз - какой индекс минимального //в итоге любой минимальный оказывается крайним слева. if (min % 2 == 0) //если же min четный то количество сдвигов влево увеличивает на 1 jMin++; //в итоге он оказывается крайним справа while (jMin>0) { temp = A[i, 0]; //значение 1-го элемента строки храним во врем.переменной for (j = 0; j < n-1; j++) { A[i, j] = A[i, j + 1]; //собственно здесь и происходит смешение значений } //каждого элемента строки строки влево ровно jMin или jMin+1 раз jMin--; A[i, n-1] = temp; } } 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(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д