Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Pahan1094
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 4
1

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

27.01.2014, 11:05. Просмотров 959. Ответов 8
Метки нет (Все метки)

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

Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
#include <iostream> #include <stdlib.h> #include <time.h> using...

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

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные
#include <iostream> #include <stdlib.h> #include <time.h> #include <cmath> ...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом – все отрицательные
В одномерном массиве, состоящем из n целочисленных элементов, вычислить:...

Преобразовать массив таким образом, чтобы сначала располагались все положительные элементы, а потом все отрицательные
В одномерном массиве, состоящем из n вещественных элементов, вычислить:...

8
Dye
3 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 22
27.01.2014, 11:07 2
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,380
27.01.2014, 11:10 3
Pahan1094, тупой вариант: взять любую функцию сортировки и использовать свой критерий сравнения. Грубо говоря, четные числа считать меньше нечетных.
0
Dye
3 / 1 / 0
Регистрация: 27.01.2014
Сообщений: 22
27.01.2014, 11:11 4
нужен код именно
0
Pahan1094
0 / 0 / 0
Регистрация: 27.01.2014
Сообщений: 4
27.01.2014, 11:16  [ТС] 5
да, нужен именно код((
0
0x10
2571 / 1751 / 288
Регистрация: 24.11.2012
Сообщений: 4,380
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
0
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 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++;
        }
    }
0
Ev[G]eN
iOS/Android Developer
Эксперт С++
5117 / 1555 / 950
Регистрация: 23.01.2011
Сообщений: 3,185
Завершенные тесты: 1
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;
}
1
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
27.01.2014, 11:26 9
Цитата Сообщение от 0x10 Посмотреть сообщение
Как решить - озвучено, а тема с алгоритмами сортировки есть на форуме
Для этого есть специальный алгоритм partition:
C++
1
partition(&arr[0], &arr[N], bind2nd(modulus<int>(), 2));
2
27.01.2014, 11:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2014, 11:26

Преобразовать массив таким образом, чтобы сначала располагались все по- ложительные элементы, а потом все остальные.как доработать?
#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; #include &lt;cmath&gt; ...

Преобразовать массив таким образом, чтобы сначала располагались все элементы, целая часть которых не превышает 1, а потом все остальные
привет всем) никак не могу придумать влгоритм для куска задачи:...

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


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

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

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