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

Все отрицательные в конец массива - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Структуры и всё связаное с ними http://www.cyberforum.ru/cpp-beginners/thread426353.html
Никак не могу разобраться со структурами. Завтра зачет по этой тебе, а я фиг что понимаю) Можете помочь разобраться как их объявлять, задавать и т.д.
C++ Отлов выхода строки за рамки памяти Здравствуйте, есть программа, в которой иногда возникает ошибка если строка очень большая мне надо получить эту строку, пытаюсь сделать с помощью try { } catch() { } Только вот не подскажите... http://www.cyberforum.ru/cpp-beginners/thread426347.html
ввод из файла структуры..исправьте... C++
#include <iomanip> #include <conio.h> #include <iostream> #include <stdlib.h> #include <string> #include <istream> using namespace std; #define FNAME "1gr.txt" #define INNAME "2gr.txt" const...
C++ Задачка про зацикливание при вводе не числа (решено но нужна консульт)
Все решено ошибка найдена если есть идеи могут предложить лучший алгоритм int NumberOfElements=0; //глобальная переменная int main() { clrscr(); do { // эта и следующая строка...
C++ Генерация случайного числа, максимально случайного http://www.cyberforum.ru/cpp-beginners/thread426278.html
Добрый день, задался вопросом как получить случайное число, но не псевдо-случайное по идее функции rand() и srand(time(NULL)) используют ниже следующий код или подобный ему int rand(void) { ...
C++ Проблема с итератором в <vector> Всем привет. Помогите пожалуйста решить проблему: У меня существует класс class Book { string author,title,publishing; int year_p; double price; public:... подробнее

Показать сообщение отдельно
go
Эксперт С++
3586 / 1366 / 128
Регистрация: 16.04.2009
Сообщений: 4,528
23.01.2012, 22:53
Вариант на Си
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 <stdio.h>
 
int fun(int val) 
{
    if ( val )
        return 0;
    return 1;
}
 
void My_sort(int* first, int* last, int (*Pred) (int )) 
{
    int t, *right, *tt;
    for ( right = last ; (right > first) && Pred(*(right - 1)) ; --right )
        ;
    for ( ; first < right ; ++first )
        if ( Pred(*first) )
        {
            t = *first; 
            for ( tt = first + 1 ; (tt != right) && Pred(*tt) ; ++tt )
                ;
            *first = *(tt);
            *(tt) = t;
            right -= Pred(*(right - 1)) ? 1 : 0;
        }
}
 
#define SIZE(a) ((sizeof(a)) / (sizeof(*a)))
 
int main(void)
{
    int arr[] = { 1, 2, 0, 0, 3, 4, 0, 5, 6, 0, 0, 1}, i;
 
    My_sort(arr, arr + SIZE(arr), fun);
    for ( i = 0 ; i < SIZE(arr) ; ++i )
        printf ("%5d", arr[i]);
    printf ("\n");
 
    return 0;
}
http://liveworkspace.org/code/8869037fbd6f689b802f920777ed9def

Добавлено через 3 часа 56 минут
Этот же код на С++11
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
#include <algorithm>
 
#define SIZE(a) ((sizeof(a)) / (sizeof(*a)))
 
int main(void)
{
   int arr[] = { 1, 2, 0, 0, 3, 4, 0, 5, 6, 0, 0, 1}, i;
   std::stable_sort(arr, arr + SIZE(arr), [] (int i, int j) { return ((i != 0) && (j == 0)); });
   for (auto it = arr ; it < arr + SIZE(arr) ; ++it )
      std::cout << *it << std::endl;
}
http://liveworkspace.org/code/0adb11801fcd2208840085adad6da5da
Только я сделал, перемещение нулей в конец, но переделать не проблема. Только фугкцию сравнения изменить
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru