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