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

Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию - C++

Восстановить пароль Регистрация
 
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
12.11.2013, 16:22     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию #1
Ребят, подскажите как написать функцию, которая будет сортировать сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию?
есть такой пример, но работает почему-то неверно!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
bool goodDisposition(int x1, int x2){
    if (x1 % 2 != x2 % 2)
          return x1 % 2 < x2 % 2;
    else if( x1 % 2 == 0)
                 return x1>x2;
        else
               return x1 <  x2;
}
 
void sortChoise(double MyArray[], int size){
    for(int i=0; i<size-1;i++){
        for(int j = i + 1; j<size; j++) {
            if (!goodDisposition(MyArray[i] ,MyArray[j])){
                int x =  MyArray[i];
                MyArray[i] =  MyArray[j];
                MyArray[j] =  x;
            }
        }
    }
}
Добавлено через 1 час 2 минуты
Помогите, пожалуйста!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 16:22     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию
Посмотрите здесь:

Проверить, чередуются ли в массиве четные и нечетные числа C++
Функция, которая вводит в массив числа, сначала с чётными, а потом с нечётными индексами C++
C++ Cортировка в массиве: сначала все четные, а потом все нечетные числа
C++ Проверить, чередуются ли в массиве четные и нечетные числа.
C++ Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
12.11.2013, 17:16     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию #2
Т.е. при исходнике 561892347 программа должна выводить что-то типа 135798642 или 183654729?
yurets17
1 / 1 / 0
Регистрация: 07.10.2013
Сообщений: 170
12.11.2013, 17:35  [ТС]     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию #3
135798642
вот это правильно
Drusha
6 / 6 / 0
Регистрация: 16.07.2013
Сообщений: 74
12.11.2013, 18:26     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию #4
Вот получилось, вроде работает

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
#include<iostream>
using namespace std;
int main()
{
    int mas[10],temp;
    int i,j=1;
    cout << "Enter arrays: " << endl;
    for(i = 0; i < 10; i++) 
    {
        cout<< j++ << " :";
        cin >> mas[i];
    }
    for(i = 0; i<10; i++)
    {   
        for(j = 9; j > i; j--)
        {
            if(mas[j-1]%2==0 && mas[j]%2)
            {
                temp=mas[j-1];
                mas[j-1]=mas[j];
                mas[j]=temp;
            }
            if(mas[j-1]<mas[j] && mas[j]%2==0 && mas[j-1]%2==0)
            {
                temp=mas[j-1];
                mas[j-1]=mas[j];
                mas[j]=temp;
            }
             if(mas[j-1]>mas[j] && mas[j]%2 && mas[j-1]%2)
            {
                temp=mas[j-1];
                mas[j-1]=mas[j];
                mas[j]=temp;
            }
        }
    }
    for(i = 0; i < 10; i++) cout << mas[i] << ' ';
    return 0;
}
Yandex
Объявления
12.11.2013, 18:26     Функция, сортирующая сначала нечетные числа в массиве по возрастанию, а потом четные по убыванию
Ответ Создать тему
Опции темы

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