Top.Mail.Ru
Ответы

Подскажите с кодом c++

задача - Дан массив целых чисел. Воспользовавшись указателями, поменяйте местами элементы массива с четными
и нечетными индексами (т.е. те элементы массива, которые стоят на четных местах, поменяйте с элементами,
которые стоят на нечетных местах).

почему-то у меня цикл не отрабатывает

По дате
По Рейтингу
Аватар пользователя
Высший разум
1мес
12345678910111213141516171819202122232425262728293031323334353637383940414243
 // C++20 
#include <array> 
#include <iostream> 
#include <random> 
#include <span> 
 
constexpr size_t length = 20; 
 
using namespace std; 
using int_t = int; 
using array_t = array<int_t, length>; 
 
void show(const span< int_t>& sequence) { 
    for (auto value : sequence) cout << value << ' '; 
    cout.put('\n'); 
} 
 
void fill_random(array_t& sequence, int_t a, int_t b) { 
    if (b < a) swap(a, b); 
    uniform_int_distribution uid(a, b); 
    mt19937 gen{ random_device()() }; 
    for (auto& value : sequence) value = uid(gen); 
} 
 
void exchange_of_neighbors(array_t& sequence) { 
    auto p_left = to_address(sequence.begin()); 
    auto p_right = to_address(next(sequence.begin())); 
    const auto p_end = to_address(sequence.end()); 
    while (p_right < p_end) { 
        iter_swap(p_left, p_right); 
        p_left += 2; 
        p_right += 2; 
    } 
} 
 
int main() { 
    array_t sequence{}; 
    fill_random(sequence, 10, 99); 
    show(sequence); 
    exchange_of_neighbors(sequence); 
    show(sequence); 
    cin.get(); 
} 
Аватар пользователя
Мастер
1мес

Кот завут бисмарк мой харощи имя?