Другие языки программирования и технологии

[C++] Как поменять строки местами в двумерном статистическом массиве размерами N1xN2?

Например 0 и 2, 1 и 3, 4 и 6, 5 и 7 и т. д.
#include <iostream>
#include <algorithm>
#include <iterator>
#include <utility>
using namespace std;
int main() {
const size_t n = 4;
int matrix[][n] = {
{ 3, 3, 3, 3 },
{ 2, 2, 2, 2 },
{ 1, 1, 1, 1 }
};
for (const auto &row : matrix) {
copy(begin(row), end(row), ostream_iterator<int>(cout, " "));
cout.put('\n');
}
cout.put('\n');
for (auto i = 0u; i < n; ++i) swap(matrix[0][i], matrix[2][i]);
for (const auto &row : matrix) {
copy(begin(row), end(row), ostream_iterator<int>(cout, " "));
cout.put('\n');
}
cout.put('\n');
system("pause");
}
Андрей Анатольевич
Андрей Анатольевич
90 669
Лучший ответ
Статическом. Менять местами элементы в строках попарно.
Нурсултан Амзе
Нурсултан Амзе
99 186
Андрей_И_Ольга *** Да, в статическом. Я, конечно, всё понимаю, но... "менять местами попарно"? Серьёзно? Думаете, не догадался из примера, который я сам и указал? :D

Я прошу просто показать то, каким образом это будет происходить на примере кода, а именно: какой цикл для этого лучше всего выбрать и т. д.
#include < iostream >
#include < cstdlib >
#include < ctime >

using namespace std;

void main()
{
setlocale(LC_ALL, "rus");
srand(time(NULL));
auto a = new int[5][4];
auto p = &a;

for (unsigned i = 0; i < 5; ++i)
{
for (unsigned u = 0; u < 4; ++u)
{
a[i][u] = rand() % 51;
cout << a[i][u] << "\t";
}
cout << endl;
}
cout << "Введите номера строк к замене ";
unsigned d1, d2;
cin >> d1 >> d2;
for (unsigned u = 0; u < 4; ++u)
{
swap(a[d1][u], a[d2][u]);
}
for (unsigned i = 0; i < 5; ++i)
{
for (unsigned u = 0; u < 4; ++u)
{
cout << a[i][u] << "\t";
}
cout << endl;
}
cin.get(); cin.get();
}

Похожие вопросы