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

Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++ - C++

Восстановить пароль Регистрация
 
Tella
 Аватар для Tella
0 / 0 / 0
Регистрация: 10.01.2011
Сообщений: 21
14.06.2011, 00:04     Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++ #1
Дан целочисленный массив A(n) с элементами, сгенерированными случайными числами в диапазоне (-20,20).
ТРЕБУЕТСЯ: Отсортировать по убыванию элементы массива с нечетными номерами методом обмена.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2011, 00:04     Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++
Посмотрите здесь:

Вывести вначале его элементы с четными номерами, а затем — элементы с нечетными номерами C++
Удалить из массива элементы с нечетными номерами C++
Отсортировать по убыванию элементы массива с нечетными номерами методом выбора C++
Отсортировать элементы массива по возрастанию методом обмена C++
Отсортировать по возрастанию элементы массива, с четными номерами методом выбора C++
Отсортировать по убыванию положительные элементы массива методом обмена C++
C++ Отсортировать массив методом прямого обмена по убыванию
Удалить из массива все элементы с нечетными номерами C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 07:45     Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++ #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
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
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;
 
int gen_random( int range_min, int range_max ) {
    return (range_min+rand()%(range_max-range_min+1));
}
 
#define N 20
 
int main() {
    int a[N];
    int *p;
    int tmp, c;
    int i, j;
 
    srand(time(NULL));
 
    for (i = 0; i < N; i++ )
        a[i] = gen_random(-20, 20);
 
//  No sorted
    for (int x = 0; x < N; x++)
        if ((x+1) % 2)
            cout << "("<<a[x] << ") ";
        else
            cout << a[x] << " ";
 
    cout << endl;
 
// получаем кол-во нечетных
    c = N / 2;
    if (N % 2) c++;
//---------------------------------------
    
    for (j = c - 1; j > 0; j--){
          p = a;
        for (i = 0; i < j; i++) {
            if (*p  < *(p+2) ) {
                tmp = *p;
                *p = *(p+2);
                *(p+2) = tmp;
            }
            p += 2; //перепрыгиваем четный
        }        
    }
//---------------------------------------
//  Show Sorted
    for (int x = 0; x < N; x++)
        if ((x+1) % 2)
            cout << "("<<a[x] << ") ";
        else
            cout << a[x] << " ";
 
    cout << endl;
    return 0;
}
Добавлено через 34 минуты
текст между //---- и // ---- заменить на этот ->
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
for( i = 0; i < c; i++) {            // i - номер прохода
        if (N % 2) // определяем является посл. эл. четн или нечетн
            p = &a[N-1];
        else
            p = &a[N];
        for( j = c - 1; j > i; j-- ) {     // внутренний цикл прохода
            if ( *(p-2) < *p ) {
                tmp=*(p-2);
                *(p-2) = *p;
                *p = tmp;
            }
            p -= 2;
        }
    }
Разницы почти нет (оба рабочих), но этот более правильный "пузырек", такой, каким его везде описывают )
Yandex
Объявления
14.06.2011, 07:45     Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++
Ответ Создать тему
Опции темы

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