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

Массивы C++

Задан массив чисел размерности n. n(чётное) . Поделить массив пополам и 1 часть поставить на место 2 а 2 на место 1 части.
Aziz Tashtanov
Aziz Tashtanov
476
#include <iostream>
using namespace std;
void uswap(int*, const size_t);
void uswap(int&, int&);
void print(int*, const size_t);
int main() {
const size_t size = 8u;
int arr[size] = { 1, 2, 3, 4, 5, 6, 7, 8 };
print(arr, size);
if (~size & 1) {
uswap(arr, size);
print(arr, size);
}
cin.get();
}
void uswap(int* arr, const size_t size) {
size_t mid = size >> 1u;
for (size_t i = 0u, j = mid; i < mid; ++i, ++j) uswap(arr[i], arr[j]);
}
void uswap(int& a, int& b) {
int tmp = a;
a = b;
b = tmp;
}
void print(int* arr, const size_t size) {
for (size_t i = 0u; i < size; ++i) cout << ' ' << arr[i];
cout << endl;
}
Олег Белов
Олег Белов
95 272
Лучший ответ
Для каждого k от 1 до n/2 обменять местами k-ый и (n/2 + k)-ый элементы. Всё.
Сергей Чулков
Сергей Чулков
50 614
#include <iostream>
using namespace std;

int main(){

const int n = 8;
int ar[n];

for(int i(0); i < n; i++){
ar[i] = i+1;
cout << ar[i] << ' ';
}
cout << '\n';

for(int i(0); i < n/2; i++){
swap(ar[i],ar[n/2+i]);
}

for(int i(0); i < n; i++)
cout << ar[i] << ' ';

cin.get();
return 0;
}
интересное задание :)
Через цикл действуй) Я пока что только такой метод знаю)