Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Buckstabue
177 / 126 / 24
Регистрация: 12.01.2012
Сообщений: 624
#1

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

12.09.2012, 19:15. Просмотров 1479. Ответов 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++):

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

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

Построить вектор из элементов массива, имеющих четные индексы
1)Задан массив с n элементов. Построить вектор с элементов из парными...

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

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

Вычислить количество отрицательных элементов массива, имеющих четные индексы
Здравствуйте. Имеется данный код помогите его переделать чтобы он Вычислял ...

3
ForEveR
В астрале
Эксперт С++
7994 / 4753 / 651
Регистрация: 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
Эксперт С++
4683 / 2509 / 751
Регистрация: 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;
}
2
Buckstabue
177 / 126 / 24
Регистрация: 12.01.2012
Сообщений: 624
12.09.2012, 19:53  [ТС] #4
ForEveR, к сожалению, использовать STL и алгоритмы запрещено

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

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

Найти максимальный среди отрицательных элементов массива имеющих четные индексы
Максимальный среди отрицательных элементов имеющих четные индексы. #include...

Класс: вычислить количество отрицательных элементов массива, имеющих четные индексы
Создать класс реализующий следующую задачу, дан целочисленный массив. Вычислить...

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


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

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

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