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

Сортировка элементов первой половины одномерного массива по убыванию, а второй – по возрастанию - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ В начале строки поставить слово http://www.cyberforum.ru/cpp-beginners/thread1110359.html
Допустим я вожу строку : abcd Мне нужно что-бы в начале строки появилось слово alphabet.
C++ Программа сначала перезаписывает 100 байт, на которые указывает указатель, а затем освобождает память Читаю уроки по C++ на форуме, почему то автор не хочет все нормально писать, в гугле ничего нормального не нашел, вот зачем в этой функции static void operator delete нужен static?? И что значит в этой же функции void* pointer?? Краткое описание: Программа сначала перезаписывает 100 байт, на которые указывает указатель, а затем освобождает память, используя для этого функцию... http://www.cyberforum.ru/cpp-beginners/thread1110357.html
C++ Найти ошибку в коде
Помогите исправить пожалуйста. #include <stdio.h> #include "stdafx.h" #include <iostream> using namespace std; void tt(char *str) {
C++ Найти натуральные числа меньше N, цифры в записи которых образуют строго возрастающую последовательность
/* Найти натуральные числа меньше N, цифры в записи которых образуют строго возрастающую последовательность. */ #include <stdio.h> #include <stdlib.h> #include <math.h> #define RUS system("chcp 1251 > nul") #define STOP system("pause") using namespace std;
C++ Решение неравенства http://www.cyberforum.ru/cpp-beginners/thread1110345.html
нужно решить функцию с оператором If else
C++ Не выходит открыть текстовый файл через командную строку #include<iostream> #include<fstream> using namespace std; int main(int argc, char*argv) { fstream fout(argv); if(!fout.is_open()) cout << "Error!\n"; char ch; while(cin.get(ch) and ch!='\n') подробнее

Показать сообщение отдельно
easybudda
Модератор
Эксперт С++
 Аватар для easybudda
9373 / 5423 / 914
Регистрация: 25.07.2009
Сообщений: 10,423
04.03.2014, 02:55     Сортировка элементов первой половины одномерного массива по убыванию, а второй – по возрастанию
IGPIGP, могу ошибаться, но по-моему из { 6, 4, 5, 2, 1, 3 } должно получаться { 4, 5, 6, 3, 2, 1 } а не { 1, 2, 3, 6, 5, 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
40
41
42
43
44
45
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <ctime>
#include <cstdlib>
 
class BoundedRandom {
    int min;
    int max;
public:
    BoundedRandom(int _min, int _max) : min(_min), max(_max) {}
    int operator () () { return rand() % (max - min + 1) + min; }
};
 
template <typename T>
void twoWaySort(T * ptr, int count) {
    int middle = count / 2 + ( count & 1 );
    std::sort(ptr, ptr + middle, std::less<T>());
    std::sort(ptr + middle, ptr + count, std::greater<T>());
}
 
#define MIN_VALUE (0)
#define MAX_VALUE (9)
 
int main(void) {
    int count;
    BoundedRandom br(MIN_VALUE, MAX_VALUE);
    
    srand(time(NULL));
    
    while ( std::cout << "Number of elements: " && std::cin >> count && count > 0 ) {
        int * array = new int [ count ];
        std::generate_n(array, count, br);
        std::cout << "Unsorted:" << std::endl;
        std::copy(array, array + count, std::ostream_iterator<int>(std::cout, " "));
        std::cout << "\nSorted:" << std::endl;
        twoWaySort(array, count);
        std::copy(array, array + count, std::ostream_iterator<int>(std::cout, " "));
        std::cout << std::endl;
        delete [] array;
    }
    
    return 0;
}
 
Текущее время: 17:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru