Двумерный массив: Осуществить циклический сдвиг элементов квадратной матрицы размером 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();
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д