Сдвинуть столбцы определенной строки в матрице влево - C#

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

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

Имеется какая-то матрица. В зависимости от того какое число вводит пользователь, в определенной строке числа сдвигаются влево. Первое число встает на место последнего. Примерно так это должно выглядеть исходный массив: 1 2 3 4 5 1 2 3 4 5 5 1 2 3 4 1 2 3 4 5 1 2 3 4 5 введите число от 1 до 5 5 итоговый массив: 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 т.е. смотрим на первое число в каждой строке и сравниваем его с введенным числом. Если они равны - эту строку и меняем. т.е. если пользователь ввел бы 1, то результат был бы таким: 2 3 4 5 1 2 3 4 5 1 5 1 2 3 4 2 3 4 5 1 2 3 4 5 1 Я тут накидал на скорую руку, но чет у меня меняются местами только первые два числа. Что я делаю не так?
static void Main(string[] args)
    {
        int N = 5, M = 5;
        int[,] a = new int[N, M];
        Random random = new Random();
        int rand;
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < M; j++)
            {
                rand = random.Next(1, 6);
                a[i, j] = rand;
            }
        }
        Console.WriteLine("исходная матрица:");
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < M; j++)
 
                Console.Write(a[i, j] + " ");
 
            Console.WriteLine();
        }
        Console.WriteLine("введите число от 1 до 5");
        int c = int.Parse(Console.ReadLine());
        for (int i = 0; i < N; i++)
        {
            for (int j = 1; j < M; j++)
            {
                for (int k = j - 1; k < M; k++)
                {
                    if (a[i, 0] == c)
                    {
                        int p = a[i, j];
                        a[i, j] = a[i, k];
                        a[i, k] = p;
                    }
                }
            }
        }
        Console.WriteLine("конечная матрица:");
        for (int i = 0; i < N; i++)
        {
            for (int j = 0; j < M; j++)
 
                Console.Write(a[i, j] + " ");
 
            Console.WriteLine();
        }
        Console.ReadKey();
    }

Решение задачи: «Сдвинуть столбцы определенной строки в матрице влево»

textual
Листинг программы
for (int i = 0; i < N; i++)
{
    if (a[i, 0] == c)
    {
        for (int j = 1; j < M; j++)
            a[i, j - 1] = a[i, j];
        a[i, M - 1] = c;
    }
}

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

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