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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ ошибка сегментирования http://www.cyberforum.ru/cpp-beginners/thread319233.html
При запуске скомпилированной (gcc) программы выскакивает ошибка сегментирования, а при запуске ее же в дебагере (gdb) -- program exited normally. Как такое понимать?
C++ Очередь Всем привет! Вопрос: целесообразно ли перегружать для очереди операторы ввода/вывода и оператор , для произвольного доступа к елементам ? Спасибо. http://www.cyberforum.ru/cpp-beginners/thread319208.html
C++ Удаление файлов определенного расширения
люди помогите доделать прогу,очень срочно... нужно зделать что бы она сначала искала,а потом предлагала удалить файл,файлы *.bat формата(на данный момент ищет только txt файлы) вот http://www.ex.ua/view_storage/267234014061 сама прога прога сделана на VS C#.. очень срочно нужно..если возможно до завтра(14-06-2011),7-8 часов утра по московскому времени переделаный вариант отправте на почту...
C++ Замер времени
Работает через раз. #include <conio.h> #include <iostream> #include <time.h> #include <windows.h> using namespace std; int _tmain() { SetConsoleCP(1251);
C++ Решить программу про строки и символы на С++ http://www.cyberforum.ru/cpp-beginners/thread319148.html
Дана строка которая уводиться с клавиатуры . Добавить с обеих сторон n элементов"*" . И можете пожалуйста описать каждую строчку программы!!!!!!!
C++ Программирование классов для моделирования лифта. Помогите пожалуйста создать модель работы лифта в С++. Есть пасажир "1" появляется на 1 этаже,время появления по таймеру:1,направление движения:вверх,прибытие и выход на этаже №6; пасажир "2" появляется на 6 этаже,время появления по таймеру:29,направление движения:вниз,прибытие и выход на этаже №1; пасажир "3" появляется на 3 этаже,время появления по таймеру:34,направление... подробнее

Показать сообщение отдельно
tylix
68 / 55 / 6
Регистрация: 10.06.2011
Сообщений: 149
14.06.2011, 07:45     Отсортировать по убыванию элементы массива с нечетными номерами методом обмена в прогрмамме С++
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;
        }
    }
Разницы почти нет (оба рабочих), но этот более правильный "пузырек", такой, каким его везде описывают )
 
Текущее время: 21:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru