Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
#1

Преобразование массива. Нечетные индексы слева, четные индексы справа - C++

12.09.2012, 19:15. Просмотров 1372. Ответов 3
Метки нет (Все метки)

Добрый вечер. Задание таково: дан некоторый массив произвольной длины, требуется преобразовать его так, чтобы элементы с четными индексами были справа, а с нечетными индексами были слева. Можно ли данную задачу решить без использования доп массива?
Пример:
{0 1 2} -> {1 0 2} или {1 2 0}
{0 1 2 3 4} -> {1 3 0 2 4}
{0 1 2 3 4 5 6 7 8} -> {1 3 5 7 0 2 4 6 8}
Порядок следования элементов в получившемя массиве не важен, важно, чтобы слева были нечетные индексы, а справа четные. Теоретически все не так сложно: обменять элементы с четными индексами первой половины с нечетными второй половины
Но на практике довольно сложно придумать, где середина у массива с нечетным числом элементов, что делать когда середина четна или когда нечетна и т.д.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 19:15
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Преобразование массива. Нечетные индексы слева, четные индексы справа (C++):

Проверить правило "четные/нечетные элементы имеют четные/нечетные индексы" - C++
2.Программа осуществляет ввод массива из 150 эллементов. Затем она проверяет правило"четные элементы имеют чётные индексы, нечетные...

Нужно найти наибольший из элементов массива, имеющих нечетные индексы - C++
Есть масив mass (8) которий заполняется вручную. А нужно найти наибольший из элементов массива, имеющих нечетные индексы.

Переписать все элементы массива M(N), имеющие нечетные индексы, подряд в массив BE - C++
Нужен код для задачи, кто знает и может помочь.Не могу понять: "Переписать все элементы массива M(N), имеющие нечетные индексы, подряд в...

Вычислить среднее арифметическое положительных элементов массива, имеющих нечетные индексы - C++
Вычислить среднее арифметическое положительных элементов массива У(10),имеющих нечетные индексы. Если таких элементов нет,то вывести на...

Найти сумму всех элементов массива, имеющих четные индексы - C++
Найти сумму всех элементов массива, имеющих четные индексы.

Найти максимальный среди отрицательных элементов массива имеющих четные индексы - C++
Максимальный среди отрицательных элементов имеющих четные индексы. #include <iostream> using namespace std; int main() { ...

3
ForEveR
В астрале
Эксперт С++
7983 / 4742 / 321
Регистрация: 24.06.2010
Сообщений: 10,547
Завершенные тесты: 3
12.09.2012, 19:35 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <vector>
#include <algorithm>
#include <iostream>
 
int main()
{
   std::vector<int> vec = {0, 1, 2};
   size_t idx = 1;
   std::stable_partition(vec.begin(), vec.end(), [&idx](int) { return (idx++ % 2) == 0; });
   for (int i : vec) { std::cout << i << " "; }
   std::cout << std::endl;
}
http://liveworkspace.org/code/5449e42c1c9f69e5ecded27d91420bc5

Только вот есть беда - никто не гарантирует, что обходится вектор будет четко в том порядке в каком есть
1
valeriikozlov
Эксперт С++
4674 / 2500 / 321
Регистрация: 18.08.2009
Сообщений: 4,550
12.09.2012, 19:43 #3
вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
using namespace std;
 
int main()
{
    int a[100], i, j, tmp, N;
    cout<<"N=";
    cin>>N;
    for(i=0; i<N; i++)
    {
        a[i]=i;
        cout<<a[i]<<" ";
    }
    for(i=1; i<N/2+1; i+=2)
    {
        tmp=a[i-1]; a[i-1]=a[i]; a[i]=tmp;
    }
    for(j=1; i<N; i+=2, j+=2)
    {
        tmp=a[j]; a[j]=a[i]; a[i]=tmp;
    }
    cout<<endl;
    for(i=0; i<N; i++)
    {       
        cout<<a[i]<<" ";
    }
    return 0;
}
1
Buckstabue
175 / 124 / 6
Регистрация: 12.01.2012
Сообщений: 624
12.09.2012, 19:53  [ТС] #4
ForEveR, к сожалению, использовать STL и алгоритмы запрещено

Добавлено через 5 минут
valeriikozlov, большое спасибо. Работает как надо!
0
12.09.2012, 19:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2012, 19:53
Привет! Вот еще темы с ответами:

С++ Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа - C++
Вычислить сумму элементов массива, которые делятся на 3 и индексы которых есть нечетные числа

Определить количество элементов массива, которые имеют четные индексы и являются кратными 3 - C++
Дан одномерный числовой массив. Определить количество элементов этого массива, которые имеют четные индексы и являются кратными 3, а также...

Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть нечетные числа - C++
Вычислить сумму отрицательных элементов массива, которые делятся на 5 и индексы которых есть нечетные числа.

Сформировать одномерный массив В, записав в него сначала элементы массива А, имеющие четные индексы - C++
Сформировать одномерный массив В,записав в него сначала элементы массива А,имеющие четные индексы,потом-элементы с нечетными индексами.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.