Другие языки программирования и технологии
Помогите составить программу в 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;
}
Банальный (и очень неэффективный) метод вставок:
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;
}
Тут нет требования сохранять порядок элементов,
поэтому решение довольно простое:
меняешь местами чётные элементы в первой половине массива
и элементы на нечётных местах во второй половине массива.
поэтому решение довольно простое:
меняешь местами чётные элементы в первой половине массива
и элементы на нечётных местах во второй половине массива.
Ибрагим Шамхалов
Точно, забыл указать, порядок сохранятся должен
#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;
}
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;
}
Похожие вопросы
- помогите составить программу-тест на C++
- Помогите составить программу на паскале!
- Помогите составить программу на pascal
- Помогите с программой Dev C++
- Помогите написать программу по C++
- Помогите написать программу на C/C++
- помогите написать программу на c++
- помогите составить программу на языке Turbo pascal
- Помогите составить программу на языке Pascal
- Помогите написать программу в C++