Программа на с++,меняющая строки матрицы местами

Хочу сделать программу,которая меняет строки местами(первую со второй,третью с четвертой и тд),если кол-во строк четно.Но у меня получается какая-то фигня и в ответе вместо второго числа 0 выводится

#include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "russian");
    srand((time(0)));
    int n;
    int k;
    cout << "введите размер массива: ";
    cin >> n;
    int** A = new int* [n];
    for (int i = 0; i < n; i++)
    {
        A[i] = new int[n];
        for (int j = 0; j < n; j++) {
            A[i][j] = rand() % 100;
            cout << A[i][j] << " ";

        }
        cout << endl;
    }
 
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < n; j++)
        {
            A[i] = new int[n];
            if (n % 2 == 0)
            k = A[i][j];
            A[i][j] = A[i + 1][j];
            A[i + 1][j] = k;
            cout << A[i][j] << " ";
            cout << A[i+1][j] << " ";
             cout << endl;

        }
        cout << endl;
    }

    
    delete[] A;
    return 0;
}

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

Автор решения: Harry

Раз уж такое везение, что именно строки - этого будет достаточно:

for (int i = 0; i < n-1; i+=2)
{
    int * tmp = A[i];
    A[i] = A[i+1];
    A[i+1] = tmp;
}

Да, и вы не всю память освободили...

Вот тут - https://ideone.com/dMHZrC - полный код, посмотрите...

→ Ссылка