Как сделать цикличиский сдвиг двумерного массива на n элементов вниз и вправо через if С++

cout << "Where does the matrix shift - to the right(0), down(1) ? " << endl;

int a;
cin >> a;
if (a == 0)
{
    cin >> a;
    for (int i = 0; i < a; i++) {

        for (int j = 0; j < n; j++)
        {
            temp = arr[j][0];
            for (int g = 0; g < m - 1; g++)          // условие для смещения  влево
                arr[j][g] = arr[j][g + 1];
            arr[j][m - 1] = temp;
        }
    }
    for (int i = 0; i < n; i++)
    {
        for (int j = 0; j < m; j++)
            cout << arr[i][j] << " ";
        cout << endl;
    }
}

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

Автор решения: Miracle-
for (std::size_t j = cols - 1; j > 0; --j)//right
        std::swap(arr[0][j], arr[0][j - 1]);

for (std::size_t i = 0; i < rows - 1; ++i)//down
        std::swap(arr[i][0], arr[i + 1][0]);

С остальным как-нибудь сами.

P.S: rows -> строки, cols -> столбцы

→ Ссылка