C/C++

С++ Составить функцию, которая меняет местами пары соседних элементов в массиве

Помогите с задачей.
Составить функцию, которая меняет местами пары соседних элементов в массиве: нулевой с первым, второй с третьим и т. д. С помощью этой функции преобразовать 2 линейных массива.
#include <iostream>
#include <iomanip>
#include <random>
using namespace std;
void show(int* box, size_t n, size_t w) {
for (auto i = 0U; i < n; ++i) cout << setw(w) << box[i];
puts("");
}
void rotate(int* box, size_t n) {
for (auto i = 1U; i < n; i += 2) swap(box[i], box[i - 1]);
}
int main() {
uniform_int_distribution<> uid(10, 99);
mt19937 gen{ random_device()() };
const auto an = 12U;
const auto bn = 13U;
const auto w = 3U;
int av[an];
for (auto& x : av) x = uid(gen);
show(av, an, w);
rotate(av, an);
show(av, an, w);
puts("");
int bv[bn];
for (auto& x : bv) x = uid(gen);
show(bv, bn, w);
rotate(bv, bn);
show(bv, bn, w);
system("pause > nul");
}
Арман Сарипов
Арман Сарипов
79 256
Лучший ответ
void my_swap(int *a, int *b)
{
    int tmp;

    tmp = *a;
    *a = *b;
    *b = tmp;
}

void swap_arr(int *arr, int size)
{
    for (int i = 0; i < size - 1; i = i + 2)
        my_swap(&arr[i], &arr[i + 1]);
}

void print_arr(int *arr, int size)
{
    for (int i = 0; i < size; i++)
        cout << arr[i] << ' ';
    cout << endl;
}

int main()
{
    int a[11] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    print_arr(a, 11);
    swap_arr(a, 11);
    print_arr(a, 11);
    return 0;
}

P.S. Пример с одним массивом
Я бы лучше так сделала:
#include <iostream>
#include <iomanip>
#include <cstdlib>
#include <ctime>
using namespace std; int n;
void rotate(int *a) { int i, j, m = n / 2, t; for
(i = 0; i < m; i += 2) { j = 2 * i; t = a[j];
a[j] =a[j + 1]; a[j + 1] = t; } }
void print(int *a) { int i, j = 0; for (i = 0; i < n; i++) { cout << setw(5) << a[i]; ++j; if (j == 10) { j = 0;
cout << endl; } } if (n % 10) cout << endl; }
int main() { srand(time(NULL)); while (true) {
cout << "n = ?\b"; cin >> n; int *a = new int [n];
cout << "Array:" << endl; for (int i = 0; i < n; i++)
a[i] = rand() % 1999 - 999; print(a); rotate(a);
cout << "Transformed Array:" << endl; print(a);
delete [] a; } }
Mus1C Is My Life (].~_^.[)
Mus1C Is My Life (].~_^.[)
29 440

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