Cдвиг вправо или влево на n элементов в матрице - C#

Узнай цену своей работы

Формулировка задачи:

Вот начало моего кода, помогите, пожалуйста
using System;
using System.Collections.Generic;
using System.Text;
 
namespace LabRab5
{
    class Program
    {
        static void Main(string[] args)
        {
 
            //Массив элементов
 
            Console.WriteLine("Введите кол-во строк:");
            int n = Convert.ToInt32(Console.ReadLine());
            Console.WriteLine("Введите кол-во столбцов:");
            int k = Convert.ToInt32(Console.ReadLine());
            int[,] a = new int[n, k];
            Random random = new Random();
            for (int i = 0; i < n; i++)
            {
                for (int j = 0; j < k; j++)
                {
                    a[i, j] = random.Next(50);
                    Console.Write("{0,4}", a[i, j]);
                }
                Console.WriteLine();
            }
                //Вводим количество элементов для  сдвига
                Console.Write("Введите количество элементов для  сдвига: ");
            string buf1 = Console.ReadLine();
           
            //Ввдим режим сдвига
            Console.Write("Выберите режим сдвига( 1 - вправо, 2 - вниз ): ");
            string buf2 = Console.ReadLine();
            int sd = int.Parse(buf2);
            //Осуществляем сдвиги

Решение задачи: «Cдвиг вправо или влево на n элементов в матрице»

textual
Листинг программы
        static void Main(string[] args)
        {
            int[,] array =
               {
                {1,2,3 },
                {4,5,6 },
                {7,8,9 }
            };
            PrintArray(array);
            PrintArray(MoveRight(array, 1));
            PrintArray(MoveRight(array, -1));
            Console.ReadKey();
 
        }
 
        static T[,] MoveRight<T>(T[,] array, int positions)
        {
            int l1 = array.GetLength(0), l2 = array.GetLength(1);
            T[,] result = array.Clone() as T[,];
            for (int i = 0; i < l1; i++)
            {
                for (int j = 0; j < l2; j++)
                {
                    int jj = (j - positions) % l2;
                    jj = jj < 0 ? jj + l2 : jj;
                    result[i, j] = array[i, jj];
                }
            }
            return result;
        }
 
        static void PrintArray<T>(T[,] array)
        {
            for (int i = 0; i < array.GetLength(0); i++)
            {
                for (int j = 0; j < array.GetLength(1); j++)
                {
                    Console.Write(array[i, j].ToString() + " ");
                }
                Console.WriteLine();
            }
            Console.WriteLine();
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5
Похожие ответы