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

задание с массивом в С++

преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине - элементы, стоявшие в нечетных позициях. Массив у меня одномерный, из 10-ти целых элементов
Вот еще вариант, сохраняется порядок следования чисел.

#include <iostream>
#include <iomanip>// setw(), вывод через равные интервалы
using namespace std;

int main()
{
int a [ ] = {0,111,22,333,4,55,666,77,8,9};
unsigned int size_arr= (sizeof(a)/sizeof(a[ 0 ]));//это чтобы не пересчитывать если поменять размер массива
//--------------------------------
// вывод на экран начального массива
for(unsigned int p= 0; p< size_arr; p++)
{
cout<< setw(4)<< a[p]<< " ";
}
cout<< endl;
//--------------------------------
// сортировка
for(unsigned int p= 2; p< size_arr; p++)
{
unsigned int k;
if(!(p%2))
{
int tmp= a[p];
for(k= p; k> p/2; k--)
{
a[k]= a[k-1];
}
a[k]= tmp;
}
}
//--------------------------------
// вывод на экран измененного массива
for(unsigned int p= 0; p< size_arr; p++)
{
cout<< setw(4)<< a[p]<< " ";
}
cout<< endl;
//--------------------------------
return 0;
}
Жумабай Койчубаев
Жумабай Койчубаев
23 527
Лучший ответ
Ну блин,
1) Сделай два буферных массива (для четных и нечетных) .
2) Заполни их из первого массива, как ты догадался, попеременно то в один, то в другой.
2) Из них перепиши основной, сначала весь один (четный) , потом другой (не четный) .
3) Очисти память из-под дополнительных массивов.
сортировкой.. .
Давид Мурадян
Давид Мурадян
1 529
Если 0 считать четной позицией.. .

void print(int a [ ] ,int n)
{
for (int i = 0; i<10; i++)
{
cout << a [ i ] << " ";
}
cout << endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
int a [ ] = {0,1,2,3,4,5,6,7,8,9};
int n = 10;
print(a,n);
int k = 0;
for (int i = 0 ; i < 10 ; i++)
{
if((i)%2==0)
{
int t = a [ k ];
a [ k ] = a [ i ];
a [ i ] = t;
k++;
}
}
print(a,n);
return 0;
}
Master Vip
Master Vip
1 394