Перевернуть нечётные столбцы матрицы

Последняя функция почему-то переворачивает только один столбец, а в зависимости от размерности массива может вообще не перевернуть. Не могу понять в чём проблема, подскажите что нужно исправить.

#include <iostream>
#include <ctime>

using namespace std;

void out(int** a, int n, int t);
int** make(int row, int col);
int** swapvec(int** vec, int n, int t);

void main() {
    setlocale(0, "");
    srand(time(NULL));
    //Размерность двумерного динамического массива
    int cols, rows;
    int** a = NULL;
    int** b = NULL;

    cout << "Введите количество строк:";
    cin >> rows;
    cout << "Введите количество столбцов: ";
    cin >> cols;
    system("cls");
    //Создание массива
    a = make(rows, cols);
    b = a;
    //Вывод массива
    cout << "Двумерный массив:\n";
    out(a, rows, cols);
    //Транспонирование и вывод
    //transpon(b, rows, cols);
    for (int i = 0; i < rows; i++) {
        for (int j = 0; j < cols; j++) {
            if (j % 2 == 1) {
                a = swapvec(a, rows, cols);
            }
        }
    }
    //Вывод транспонированной матрицы
    out(b, rows, cols);
}
//Функция для вывода двумерного динамического массива
void out(int **a, int n, int t) {
    for (int i = 0; i < n; i++) {
        for (int j = 0; j < t; j++) cout << a[i][j] << "\t";
        cout << endl;
    }
    cout << endl;
}
//Функция для создания двумерного динамического массива
int** make(int row, int col) {
    //Выделение памяти для массива
    int** a = new int* [row];
    for (int i = 0; i < row; i++) a[i] = new int[col];
    //Заполнение массива рандомными уникальными числами
    bool check;
    for (int i = 0; i < row; i++)
    {
        for (int j = 0; j < col;)
        {
            check = false;
            int newRandomValue = rand() % (row * col);
            for (int x = 0; x < row; x++)
            {
                for (int y = 0; y < col; y++)
                {
                    if (a[x][y] == newRandomValue)
                    {
                        check = true;
                        break;
                    }
                }
            }
            if (!check)
            {
                a[i][j] = newRandomValue;
                j++;
            }
        }
    }
    return a;
}
//Функция для переворота столбцов
int** swapvec(int** mas, int n, int t)
{
    for (int j = 1; j < t; j ++)
    {
        for (int i = 0; i < n / 2; i++)
        {
            int tmp = mas[i][j];
            mas[i][j] = mas[n - 1 - i][j];
            mas[n - 1 - i][j] = tmp;
        }
        return mas;
    }
}
  

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

Автор решения: Igor
for (int j = 0; j < cols; j++) {
    if (j % 2 == 1) {
        a = swapvec(a, rows, j);
    }
}

int** swapvec(int** mas, int n, int t)
{
    for (int i = 0; i < n / 2; i++)
    {
        int tmp = mas[i][t];
        mas[i][j] = mas[n - 1 - i][t];
        mas[n - 1 - i][t] = tmp;
    }
    return mas;
}
→ Ссылка