Форум программистов, компьютерный форум CyberForum.ru

Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы - C++

Восстановить пароль Регистрация
 
Pahan1094
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 4
27.01.2014, 11:05     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #1
Ребята , помогите : нужно составить алгоритм и программу преобразования массива A[1..n], таким образом , чтобы сначала распологались четные , а потом нечетные элементы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2014, 11:05     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
Посмотрите здесь:

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные C++
Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные C++
Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом - все остальные C++
C++ Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
C++ Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dye
-1 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 5
27.01.2014, 11:07     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #2
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.01.2014, 11:10     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #3
Pahan1094, тупой вариант: взять любую функцию сортировки и использовать свой критерий сравнения. Грубо говоря, четные числа считать меньше нечетных.
Dye
-1 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 5
27.01.2014, 11:11     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #4
нужен код именно
Pahan1094
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 4
27.01.2014, 11:16  [ТС]     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #5
да, нужен именно код((
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
27.01.2014, 11:18     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #6
А своя голова на что? Как решить - озвучено, а тема с алгоритмами сортировки есть на форуме + википедию никто не отменял.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <algorithm>
#include <iostream>
#include <vector>
 
int main()
{
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
 
    std::sort(v.begin(), v.end(),
        [](int a, int b) { return (a % 2) < (b % 2); });
 
    for (const auto& item: v)
    {
        std::cout << item << " ";
    }
    std::cout << std::endl;
}
Добавлено через 40 секунд
Bash
1
2
$ ./a.out 
2 4 6 8 0 1 3 5 7 9
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
27.01.2014, 11:21     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #7
Как понимаю STL не канает. Тогда делаем так. Если порядок не важен можно дублировать исходный массив причем четные элементы вставлять с начала массива, нечетные с конца. Т.е. примерно вот так:
C++
1
2
3
4
5
6
7
8
9
10
11
    while((i + j) < N)
    {
        if (arr_in[i + j]%2) {
           arr_out[N - j -1] = arr_in[i + j]; //Êîïèðóåì Г*ГҐГ·ГҐГІГ*ûå ýëåìåГ*ГІГ» Гў ГЄГ®Г*ГҐГ¶
           j++;
        }
        else {
           arr_out[i] = arr_in[i + j];//Êîïèðóåì Г·ГҐГІГ*ûå ýëåìåГ*ГІГ» Гў Г*Г*Г·Г*ëî        
           i++;
        }
    }
Ev[G]eN
Эксперт С++
 Аватар для Ev[G]eN
5093 / 1531 / 381
Регистрация: 23.01.2011
Сообщений: 3,148
27.01.2014, 11:21     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #8
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
29
#include <algorithm>
#include <iostream>
#include <iterator>
#include <random>
#include <array>
 
int main()
{
    std::default_random_engine generator;
    std::uniform_int_distribution <> distribution(2, 50);
 
    const size_t arraySize = 15;
    std::array <int, arraySize> array;
    std::cout << "Array: " << std::endl;
    std::generate(array.begin(), array.end(), [&] () -> int {
        return distribution(generator);
    });
    std::copy(array.begin(), array.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::cout << std::endl << "Result: " << std::endl;
    std::array <int, arraySize> ::iterator endOfPart = std::partition(array.begin(), array.end(), [] (int currentElement) -> bool {
        return !(currentElement % 2);
    });
    std::copy(array.begin(), endOfPart, std::ostream_iterator <int> (std::cout, " "));
    std::copy(endOfPart, array.end(), std::ostream_iterator <int> (std::cout, " "));
 
    std::system("pause >> temp");
    return 0;
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 11:26     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
Еще ссылки по теме:

C++ Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать?
C++ Превратить массив таким образом, чтобы сначала располагались парные элементы, затем нечетные и нулевые.
Преобразовать массив так, чтобы сначала располагались четные элементы, затем нечетные и нулевые C++

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

Или воспользуйтесь поиском по форуму:
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
27.01.2014, 11:26     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы #9
Цитата Сообщение от 0x10 Посмотреть сообщение
Как решить - озвучено, а тема с алгоритмами сортировки есть на форуме
Для этого есть специальный алгоритм partition:
C++
1
partition(&arr[0], &arr[N], bind2nd(modulus<int>(), 2));
Yandex
Объявления
27.01.2014, 11:26     Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
Ответ Создать тему
Опции темы

Текущее время: 00:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru