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

Помогите составить программу в C++

Переставьте элементы массива так, чтобы сначала шли элементы с нечетными индексами, затем - с четными. Надо именно преобразовать массив! Вывести циклом сначала с нечетными потом нечетными индексами нельзя
a - преобразуемый массив, n - длина массива.
Банальный (и очень неэффективный) метод вставок:

int k = n / 2; // Кол-во нечётных индексов
for(int i = 0; i < k ; ++i) {
// Очередной перемещаемый элемент с нечётным индексом
int tmp = a[i * 2 + 1];
// Сдвиг блока элементов с [бывшими] чётными индексами на позицию вправо
for(int j = i * 2 + 1; j > i; --j) { a[j] = a[j - 1]; }
// Вставка элемента с [бывшим] нечётным индексом в нужное место
a[i] = tmp;
}
НК
Нурлан Кабиев
99 294
Лучший ответ
Тут нет требования сохранять порядок элементов,
поэтому решение довольно простое:

меняешь местами чётные элементы в первой половине массива
и элементы на нечётных местах во второй половине массива.
Ибрагим Шамхалов Точно, забыл указать, порядок сохранятся должен
#include

using std::cout;
using std::endl;
using std::cin;

int main()
{
setlocale(LC_ALL, "Russian");

int N = 10;
int* Array = new int[N];
cout << "Первородный массив: " << endl;
for (int i(0); i < N; i++)
{
Array[i] = i;
cout << Array[i] << endl;
}
cout << endl;
int* tempArray = new int[N];
cout << "Измененный массив: " << endl;
int j(0);
for (int i(0); i < N; i++)
{
if (i % 2 != 0)
{
tempArray[j] = Array[i];
j++;
}
}
for (int i(0); i < N; i++)
{
if (i % 2 == 0)
{
tempArray[j] = Array[i];
j++;
}
}
for (int i(0); i < N; i++)
{
Array[i] = tempArray[i];
cout << Array[i] << endl;
}
delete[] tempArray;
tempArray = nullptr;
delete[] Array;
Array = nullptr;
system("pause");
return 0;
}
Виктор Гнетнев
Виктор Гнетнев
10 755