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

Упорядочить одномерный массив - C++

Восстановить пароль Регистрация
 
sabich
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 23
17.01.2014, 12:59     Упорядочить одномерный массив #1
Необходимо упорядочить одномерный массив случайных чисел в таком порядке, сначала возрастающие четные элементы затем возрастающие нечетные элементы. Например 3 6 1 7 8 10 = 6 8 10 1 3. Подскажите как это сделать...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.01.2014, 12:59     Упорядочить одномерный массив
Посмотрите здесь:

C++ Нужно упорядочить одномерный массив
Упорядочить одномерный массив указателей на строки C++
C++ Упорядочить одномерный массив по возрастанию
C++ Одномерный массив 10 символов.упорядочить по убыванию
Дан двумерный массив. Упорядочить элементы каждой строки массива; сформировать одномерный массив из элементов главной диагонали упорядоченного массива C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
17.01.2014, 13:30     Упорядочить одномерный массив #2
Думаю рандомное заполнение вектора вы сами напишите:
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>
#include<vector>
#include<iterator>
class IsEven
{
public:
    bool operator() (int number)
    {
        return !(number%2);
    }
};
int main()
{
    std::vector<int> mass;
 
    mass.push_back(1);
    mass.push_back(2);
    mass.push_back(3);
    mass.push_back(4);
    mass.push_back(5);
    mass.push_back(6);
 
    std::vector<int>::iterator iter = std::partition(mass.begin(), mass.end(), IsEven());
    std::sort(mass.begin(), iter);
    std::sort(iter, mass.end());
    std::copy(mass.begin(), mass.end(), std::ostream_iterator<int>(std::cout, " "));
    return 0;
}
school_bot
14 / 12 / 3
Регистрация: 23.12.2013
Сообщений: 84
17.01.2014, 13:31     Упорядочить одномерный массив #3
Цитата Сообщение от sabich Посмотреть сообщение
Необходимо упорядочить одномерный массив случайных чисел в таком порядке, сначала возрастающие четные элементы затем возрастающие нечетные элементы. Например 3 6 1 7 8 10 = 6 8 10 1 3. Подскажите как это сделать...
можно завести 2 массива - с четными и нечетными числами. отсортировать их известными способами.Алгоритмы сортировок. затем объединить в начальный массив.
sabich
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 23
17.01.2014, 16:24  [ТС]     Упорядочить одномерный массив #4
Ilot, нужно не векторное заполнение массива, а именно сортировка.

Добавлено через 58 секунд
school_bot, а примерчик можно например используя сортировку выбором.
Ilot
Модератор
Эксперт С++
1767 / 1142 / 223
Регистрация: 16.05.2013
Сообщений: 3,020
Записей в блоге: 5
Завершенные тесты: 1
17.01.2014, 16:50     Упорядочить одномерный массив #5
Цитата Сообщение от sabich Посмотреть сообщение
Ilot, нужно не векторное заполнение массива, а именно сортировка.
Ну если вы читать код не умеете объясню:
C++
1
2
3
4
5
6
7
8
   //Делим массив на две части. Первая четные числа, вторая нечетные. Возвращаем разделитель итератору iter
    std::vector<int>::iterator iter = std::partition(mass.begin(), mass.end(), IsEven());
    //Сортируем четные числа
    std::sort(mass.begin(), iter);
    //Сортируем нечетные числа
    std::sort(iter, mass.end());
    //Выводим результат  в консоль
    std::copy(mass.begin(), mass.end(), std::ostream_iterator<int>(std::cout, " "));
school_bot
14 / 12 / 3
Регистрация: 23.12.2013
Сообщений: 84
17.01.2014, 17:04     Упорядочить одномерный массив #6
примерчик уже есть. хотите проще - объявляйте 3 массива, используйте сортировки - можете взять с википедии, если не хотите принципиально пользоваться первой ссылкой и объединяйте массивы.
Цитата Сообщение от sabich Посмотреть сообщение
school_bot, а примерчик можно например используя сортировку выбором.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.01.2014, 16:33     Упорядочить одномерный массив
Еще ссылки по теме:

C++ Из двух целочисленных массивов различной размерности сформировать общий массив. Упорядочить полученный массив
Дан одномерный массив размером М. Упорядочить элементы с нечетными номерами по возрастанию C++
C++ Как упорядочить одномерный массив по возрастанию?

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

Или воспользуйтесь поиском по форуму:
sabich
0 / 0 / 0
Регистрация: 24.12.2013
Сообщений: 23
18.01.2014, 16:33  [ТС]     Упорядочить одномерный массив #7
Возможно я не правильно выразился, но нужно решить задачу с использованием только массивов, циклов и условий. Без всяких sort, vector и т.д. Так сказать изобрести велосипед заново.

Добавлено через 20 часов 13 минут
пришлось самому дойти до решения
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# include <iostream>
# include <cstdlib>
# include <ctime>
using namespace std;
void main ()
{
    const int size=10;
    int arr[size], poz, ch, kolch=0, min;
    bool find;
    srand(time(NULL));
    for (int i=0;i<size;i++)    //Выводим текущий массив
    {
        arr[i]=rand()%11;
        cout << arr[i]<<" ";
    }
    cout << endl;
    for (int j=0; j<size; j++)  //Ищем четные числа и переставляем их в начало массива
    {
        find=false;
        if (arr[j]%2==0)
        {
            ch=arr[j];
            find=true;
        }
        for (int z=j+1; z<size;z++)
        {
            if (arr[z]%2 == 0)
            {
            ch=arr[z];
            poz=z;
            find=true;
            }
        }
        if (find==true)
        {
        arr[poz]=arr[j];
        arr[j]=ch;
        kolch++;
        }
    }
 
    for (int s=0;s<kolch;s++)           //Делаем перестановку четных чисел
    {
        min=arr[s];
        poz=s;
        for (int s2=s+1;s2<kolch;s2++)
        if (arr[s2]<min)
        {
        min=arr[s2];
        poz=s2;
        }
        arr[poz]=arr[s];
        arr[s]=min;
    }
 
    for (int s=kolch;s<size;s++)            //Делаем перестановку нечетных чисел
    {
        min=arr[s];
        poz=s;
        for (int s2=s+1;s2<size;s2++)
        if (arr[s2]<min)
        {
        min=arr[s2];
        poz=s2;
        }
        arr[poz]=arr[s];
        arr[s]=min;
    }
 
    for (int i=0;i<size;i++)            //Выводим результат
    {
        cout << arr[i]<<" ";
    }
    cout << endl;
}
Yandex
Объявления
18.01.2014, 16:33     Упорядочить одномерный массив
Ответ Создать тему
Опции темы

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