0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 4
1

Отсортировать чётные элементы по возрастанию, а нечётные по убыванию

22.10.2014, 20:37. Показов 6426. Ответов 19
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Вот условие(могу кое где ошибаться в правильности постановки задачи)
Составить одномерный массив, в котором бы выводилось 20(или более) рандомных чисел, а затем отсортировать их по чётности от минимального к максимальному(2,4,6,8 и т.д), по нечётности от максимального к минимальному(7,5,3,1). Ну и вывести всё это на экран(2-е сортировки). Заранее спасибо)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2014, 20:37
Ответы с готовыми решениями:

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию
Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию

Отсортировать четные элементы массива по возрастанию, а нечетные по убыванию
помогите найти ошибку.не верно сортирует. #include <iostream> #include <math.h>...

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

Отсортировать четные строки матрицы по возрастанию, а нечетные по убыванию
помогите пожалуйста с программой))) отсортировать четные строки матрицы M*N по возрастанию, а не...

19
2 / 2 / 0
Регистрация: 12.01.2014
Сообщений: 57
22.10.2014, 20:40 2
вам полностью код нужен?
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 4
22.10.2014, 21:03  [ТС] 3
да)
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,688
22.10.2014, 21:08 4
Отсортировать массив, поставив сначала чётные элементы, а потом нечётные
0
0 / 0 / 0
Регистрация: 22.10.2014
Сообщений: 4
22.10.2014, 21:45  [ТС] 5
не то что мне нужно(
0
2 / 2 / 0
Регистрация: 12.01.2014
Сообщений: 57
22.10.2014, 22:06 6
может набросаете что_то а мы поможем!За вас никто не напишет,нужно учится,по себе знаю)
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,688
22.10.2014, 22:11 7
Цитата Сообщение от vasya526 Посмотреть сообщение
не то что мне нужно(
Это почти то!
Потрудитесь составить алгоритм для своей задачи и на его основании модифицировать то, что есть!
0
2 / 2 / 0
Регистрация: 12.01.2014
Сообщений: 57
22.10.2014, 22:49 8
Цитата Сообщение от zss Посмотреть сообщение
Потрудитесь составить алгоритм для своей задачи и на его основании модифицировать то, что есть!
Вот-вот, человек хорошие вещи говорит)Нас преподаватель всегда учил, нарисуйте алгоритм и по этому алгоритму уже будет проще писать программу!Ну кому как конечно!А вообще програмка то не сложная)

Добавлено через 1 минуту
у вас вообще круто,использует функция random за вас все)
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
22.10.2014, 23:03 9
Опять же, не пользуясь свойствами С++11

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
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
 
using namespace std;
 
inline bool is_even(int v) {
  return v % 2 == 0;
}
 
int main() 
{
  const int N = 20;
  int a[N];
 
  generate(a, a + N, rand);
  int *p = partition(a, a + N, is_even);
  sort(a, p, less<int>());
  sort(p, a + N, greater<int>());
 
  copy(a, p, ostream_iterator<int>(cout, " "));
  cout << endl;
  copy(p, a + N, ostream_iterator<int>(cout, " "));
  cout << endl;
}
0
2 / 2 / 0
Регистрация: 12.01.2014
Сообщений: 57
22.10.2014, 23:27 10
Цитата Сообщение от TheCalligrapher Посмотреть сообщение
Опять же, не пользуясь свойствами С++11
опять таки, человек должен разобраться)
1
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
23.10.2014, 00:51 11
У меня страсть писать свои функции:
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
76
77
78
#include <iostream>
#include <cstdlib>
#include <ctime>
 
using namespace std;
 
void even(int array[], int size) {
    for ( int i = 0; i < size; i++ ) {
        if ( array[i] % 2 == 0 ) {
            int min = array[i];
            
            for ( int j = i; j < size; j++ ) {
                if ( min > array[j] && array[j] % 2 == 0 ) {
                    min = array[j];
                    array[j] = array[i];
                    array[i] = min;
                }
            }
        }
    }
}
 
void odd(int array[], int size) {
    for ( int i = 0; i < size; i++ ) {
        if ( array[i] % 2 != 0 ) {
            int max = array[i];
            
            for ( int j = i; j < size; j++ ) {
                if ( max < array[j] && array[j] % 2 != 0 ) {
                    max = array[j];
                    array[j] = array[i];
                    array[i] = max;
                }
            }
        }
    }
}
 
void sort(int array[], int size) {
    for ( int i = 0; i < size; i++ ) {
        if ( array[i] % 2 != 0 ) {
            for ( int j = i; j < size; j++ ) {
                if ( array[j] % 2 == 0 ) {
                    int temp = array[j];
                    
                    array[j] = array[i];
                    array[i] = temp;
                }
            }
        }
    }
    even(array, size);
    odd(array, size);
}
 
void print(int array[], int size) {
    for ( int i = 0; i < size; i++ ) {
        cout << array[i] << " ";
    }
    cout << endl;
}
 
int main() {
    const int size = 20;
    int array[size];
    
    srand(time(NULL));
    
    for ( int i = 0; i < size; i++ ) {
        array[i] = rand() % 100;
    }    
    print(array, size);
 
    sort(array, size);
    print(array, size);
    
    return 0;
}
Код
@output:
53 34 21 57 32 23 21 9 0 12 66 10 46 43 80 7 45 36 65 99 
0 10 12 32 34 36 46 66 80 99 65 57 53 45 43 23 21 21 9 7
0
Вездепух
Эксперт CЭксперт С++
11688 / 6367 / 1723
Регистрация: 18.10.2014
Сообщений: 16,050
23.10.2014, 00:58 12
Цитата Сообщение от Darkrduk Посмотреть сообщение
У меня страсть писать свои функции:
Ну тогда уж надо было и генератор псевдо-случайных чисел самостоятельно написать. А то что это за пораженческая манера пользоваться готовым 'rand()'?
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
23.10.2014, 01:15 13
TheCalligrapher,
C++
1
2
3
4
5
6
7
8
9
10
void generator(int array[], int size) {
    int j;
    
    for ( int i = 0, last = size; i < size; i++ ) {
        for ( j = (last - i) % 4; j < last; j += 3 );
 
        array[i] = j;
        last -= 1;
    }
}
0
2 / 2 / 0
Регистрация: 12.01.2014
Сообщений: 57
23.10.2014, 01:21 14
Жаль у автора нет страсти к программированию)
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,688
23.10.2014, 09:21 15
Цитата Сообщение от Darkrduk Посмотреть сообщение
for ( j = (last - i) % 4; j < last; j += 3 );
Точка с запятой не ошибка?
Советую делать так:
C++
1
2
for ( j = (last - i) % 4; j < last; j += 3 )
    ;
0
Guardian of Asgaard
377 / 319 / 197
Регистрация: 11.11.2013
Сообщений: 1,046
23.10.2014, 09:47 16
Цитата Сообщение от zss Посмотреть сообщение
Советую делать так:
Хм, а почему так следует? Не все компиляторы воспринимают такой вид, как у меня?
0
Модератор
Эксперт С++
13496 / 10751 / 6406
Регистрация: 18.12.2011
Сообщений: 28,688
23.10.2014, 10:36 17
Воспринимают. Но то, что тут пустой оператор, не очень заметно.
Можно даже добавить комментарий для совсем непонятливых
C++
1
2
for ( j = (last - i) % 4; j < last; j += 3 )
    ; // пустой оператор
1
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
23.10.2014, 10:56 18
zss, да при чём тут партишн?!
1)Партишен и сортировка это разные вещи! Причём принципиально. Алгоритмы ничего общего не имеют.
2)учителя дают задания, чтоб ученик напрягся и придумал алгоритм, а не тупо шаблонный использовал.
0
Ilot
23.10.2014, 11:29
  #19

Не по теме:

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
учителя дают задания, чтоб ученик напрягся и придумал алгоритм, а не тупо шаблонный использовал.
Ну зачастую, что бы использовать шаблонный алгоритм до этого еще стоит додуматься.

0
4063 / 3317 / 924
Регистрация: 25.03.2012
Сообщений: 12,483
Записей в блоге: 1
23.10.2014, 12:00 20
Цитата Сообщение от Ilot Посмотреть сообщение

Не по теме:

Ну зачастую, что бы использовать шаблонный алгоритм до этого еще стоит додуматься.

Ilot, Чарльз Хоар, наверное, сидел и думал "как бы мне додуматься эти шаблоны применить для сортировки массива? Ну как же?! Нет, ничего не выходит. Легче придумать новый вид сортировки, придумаю-ка я Qsort!"

Ну и главное, партишн и сортировка - всё равно разные вещи.
Вот - сортировка
C++
1
2
3
4
5
6
7
8
9
10
11
12
    int mas[]={10, 4, 5, 3, 2, 1, 7, 3, 6, 0};
    const int sz=10;
    
    for (int i=0; i<sz-1; ++i){
        int max=i, mask=mas[i]&1, tmp;
        for (int j=i+1; j<sz; ++j)
            if ((mas[j]&1)==mask && mas[j]<mas[max])
                    max=j;
        tmp=mas[i];
        mas[i]=mas[max];
        mas[max]=tmp;
    }
результат: 0, 2, 1, 3, 4, 3, 5, 7, 6, 10
Как видишь, никакого партишна не происходит, а чётные/нечётные отсортированы!
А то, что до этого предлагалось - всё не в тему

Добавлено через 5 минут
хотя, да, посмотрел вопрос автора - партишн ему тоже нужен.
0
23.10.2014, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.10.2014, 12:00
Помогаю со студенческими работами здесь

Отсортировать чётные столбцы матрицы по возрастанию, а нечётные – по убыванию
Нужно: Отсортировать чётные столбцы матрицы по возрастанию, а нечётные – по убыванию. ...

Отсортировать четные столбцы матрицы по убыванию, нечетные по возрастанию (сортировка Шелла)
Богом прошу, помогите! Совершенно запутался. Необходимо: сортировкой Шелла с шагом d = N/2^i...

Вывести нечётные по значению элементы массива по возрастанию, а чётные - по убыванию
Создал программку вот такую: #include &lt;iostream&gt; #include&lt;iomanip&gt; #include &lt;time.h&gt; using...

Отсортировать по возрастанию и вывести на экран сперва чётные элементы вектора, а затем нечётные
Привет. Вообщем, стоит такая задача: &quot;Вывести на экран сначала отсортированные по возрастанию...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru