Двумерный массив: Осуществить циклический сдвиг элементов квадратной матрицы размером M * N вправо на k элементов - C#
Формулировка задачи:
Помогите пожайлуста написать программу на C#:
Осуществить циклический сдвиг элементов квадратной матрицы размером M * N вправо на k элементов таким образом: элементы первой строки сдвигаются в последний столбец сверху вниз, из него - в последнюю строку справо налево, из неё - в первый столбец снизу вверх, из него - в первую строку; для остальных элементов - аналогично
Решение задачи: «Двумерный массив: Осуществить циклический сдвиг элементов квадратной матрицы размером M * N вправо на k элементов»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication6 { class Program { static void Main(string[] args) { int[,] Arr; Console.WriteLine("n = "); int n = int.Parse(Console.ReadLine()); Console.WriteLine("m = "); int m = int.Parse(Console.ReadLine()); if (n <= 0||m <= 0) { Console.WriteLine("Uncorrect size"); Console.ReadKey(); return ; } int i = 0, j = 0; Console.WriteLine("k = "); int k = int.Parse(Console.ReadLine()); if (k <= 0 ) { Console.WriteLine("Uncorrect size"); Console.ReadKey(); return; } Random rnd = new Random(55); Arr = new int[n, m]; for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) { Arr[i, j] = rnd.Next(0, 9); Console.Write("{0} ", Arr[i, j]); } Console.WriteLine(); } //--------------------------------------- int[] a = new int[2 * n + 2 * m - 4]; int cur = 0; for (i = 0; i < m; ++i) a [cur++] = Arr[0, i]; for (i = 1; i < n; ++i) a[cur++] = Arr[i, m - 1]; for (i = m - 2; i >= 0; --i) a[cur++] = Arr[n - 1, i]; for (i = n - 2; i >= 1; --i) a[cur++] = Arr[i, 0]; int c = 2 * n + 2 * m - 4; cur = c - k; for (i = 0; i < m; ++i) Arr[0, i] = a[cur++ % c]; for (i = 1; i < n; ++i) Arr[i, m - 1] = a[cur++ % c]; for (i = m - 2; i >= 0; --i) Arr[n - 1, i] = a[cur++ % c]; for (i = n - 2; i >= 1; --i) Arr[i, 0] = a[cur++ % c]; //----------------------------------- Console.WriteLine("\n\n"); for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) { Console.Write("{0} ", Arr[i, j]); } Console.WriteLine(); } Console.ReadKey(); } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д