Вы можете поменять местами двумерный массив, используя стандартный алгоритм std::swap_ranges
или написав «вручную» al oop.
Вот демонстрационная программа.
#include <iostream>
#include <iterator>
#include <algorithm>
int main()
{
const size_t M = 5, N = 4;
int a[M][N] =
{
{ 21, 26, 31, 36 },
{ 22, 27, 32, 37 },
{ 23, 28, 33, 38 },
{ 24, 29, 34, 39 },
{ 25, 30, 35, 40 }
};
for ( const auto &row : a )
{
for ( const auto &item : row )
{
std::cout << item << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
std::swap_ranges( std::begin( a ), std::next( std::begin( a ), M / 2 ),
std::rbegin( a ) );
for ( const auto &row : a )
{
for ( const auto &item : row )
{
std::cout << item << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
for ( std::size_t i = 0; i < N / 2; i++ )
{
std::swap( a[i], a[M - i - 1] );
}
for ( const auto &row : a )
{
for ( const auto &item : row )
{
std::cout << item << ' ';
}
std::cout << '\n';
}
std::cout << '\n';
return 0;
}
Его вывод
21 26 31 36
22 27 32 37
23 28 33 38
24 29 34 39
25 30 35 40
25 30 35 40
24 29 34 39
23 28 33 38
22 27 32 37
21 26 31 36
21 26 31 36
22 27 32 37
23 28 33 38
24 29 34 39
25 30 35 40
Обратите внимание, что массивы переменной длины не являются стандартной функцией C ++. Это означает, что размеры массива должны быть известны во время компиляции. Если вы хотите, чтобы пользователь вводил размеры, используйте стандартный шаблон класса std::vector
.
Если у вас уже есть определенный массив с некоторыми максимальными значениями его размеров, и пользователь может указать его sub -array, тогда массив должен быть как минимум инициализирован нулями