зеркально отразить заданную матрицу по вертикальной оси

            int col = 0, row = 0,tmp = 0;
            Random r = new Random();

            while(row <= 0)
            {
                Console.Write("строк N = ");
                row = Convert.ToInt32(Console.ReadLine());
            }
            while (col <= 0)
            {
                Console.Write("столбов M = ");
                col = Convert.ToInt32(Console.ReadLine());
            }
            a = new int[row, col];

            Console.WriteLine("Исходная матрица");
            for (int i = 0; i < row; i++)
            {
                for (int j = 0; j < col; j++)
                {
                    a[i, j] = r.Next(10);
                    Console.Write("{0} ",a[i,j]);
                }
                Console.WriteLine();
            }```

Ответы (1 шт):

Автор решения: Елена Попова

Нужно запустить два цикла по количеству столбцов и строк и если номер столбца больше половины количества столбцов, заменить данный элемент на соответствующий из этой же строки. Если а - это матрица:

for (int i = 0; i < n; i++) {
    for (int j = 0; i < m; j++) {
        if (j > m / 2) {
            a[i][j] = a[i][n / 2 - (j - n / 2) - 1]
        }
    } 
}

Условие внутри блока if означает что строка (i) в которой находится новый (копируемый) элемент, остается та же, а столбец меняется на зеркальный. Чтобы составить условие, полезно расписать несколько итераций цикла на листочке.

EDIT: Поняла, что нужно отразить по вертикали всю матрицу а не только вторую половину. В таком случае код циклов с использованием разменного стола table будет следующим:

for (int i = 0; i < n; i++) {
   for (int j = 0; i < m / 2; j++) {
       table = a[i][j];
       a[i][j] = a[i][n / 2 - (j - n / 2) - 1];
       a[i][n / 2 - (j - n / 2) - 1] = table;
   } 
}

Первый элемент сохраняется в переменную. Ему присваивается значение последнего в строке. Затем, последнему присваивается значение переменной table и тд. В данном случае, второй цикл идет только до половины матрицы по столбцам чтобы не допустить повторного переставления.

→ Ссылка