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

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных - C++

Восстановить пароль Регистрация
 
Aleksey777
Сообщений: n/a
15.12.2011, 21:23     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных #1
Напишите пожалуста программку, метод сортировки ваще не понимаю.

Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2011, 21:23     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
Посмотрите здесь:

C++ Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
Преобразовать массив таким образом, чтобы элементы, равные нулю располагались после остальных. C++
C++ Преобразовать массив таким образом чтобы сначала располагались все элементы равные нулю а потом остальные
C++ Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
C++ Преобразовать массив таким образом, чтобы сначала располагались четные, а потом нечетные элементы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Петррр
 Аватар для Петррр
5916 / 3353 / 333
Регистрация: 28.10.2010
Сообщений: 5,926
15.12.2011, 21:34     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных #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
#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
#include <ctime>
 
using namespace std;
 
class TransformArray{
    int _maxRandom;
    int _value;
public:
    TransformArray(int maxRandom, int value):
        _maxRandom(maxRandom),
        _value(value) {
        srand(time(NULL));
    }
    int operator() () {
        return rand() % _maxRandom;
    }
    bool operator ()(int item) {
        return item != _value;
    }
};
 
int main()
{
    cout << "Size: ";
    int size;
    cin >> size;
    vector<int> vec(size);
    TransformArray ta(10, 0);
    generate(vec.begin(), vec.end(), ta);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    cout << endl;
    stable_partition(vec.begin(), vec.end(), ta);
    copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
    return EXIT_SUCCESS;
}
xAtom
 Аватар для xAtom
910 / 735 / 60
Регистрация: 09.12.2010
Сообщений: 1,346
Записей в блоге: 1
15.12.2011, 21:48     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных #3
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
#include <iostream>
#define m_swap(type, a, b)  { type t = a; a = b; b = t; }
 
void move_tail(int val, int* arr, int size) {
  for(int i = 0; i < size; i++) {
        if(arr[i] == val) {
             for(int k = i; k < size - 1; k++)
                 m_swap(int, arr[k], arr[k + 1]);
             i--;
             --size;
        }
   }
}
 
int main(void) {
   int arr[] = { 0, 0, 30, 45, 0, 0, 20, 5, 7, 0, 11 };
   int size  = sizeof(arr) / sizeof(arr[0]);
   
   move_tail(0, arr, size);
   for(int i = 0; i < size; i++)
          std::cout << arr[i] << "  ";
   std::cout.put('\n');
   return 0;
}
rangerx
1908 / 1517 / 139
Регистрация: 31.05.2009
Сообщений: 2,876
15.12.2011, 22:58     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных #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
#include <iostream>
#include <algorithm>
#include <functional>
#include <iterator>
#include <random>
#include <array>
#include <ctime>
 
int main()
{
    std::array<int, 20> a;
 
    std::generate(a.begin(), a.end(),
                  std::bind(std::uniform_int_distribution<>(-5, 5), std::mt19937(std::time(nullptr))));
 
    std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
 
    std::stable_partition(a.begin(), a.end(), [](int i) { return i == 0; });
 
    std::copy(a.begin(), a.end(), std::ostream_iterator<int>(std::cout, " "));
    std::cout << std::endl;
}
Yandex
Объявления
15.12.2011, 22:58     Преобразовать массив таким образом, чтобы элементы, равные нулю, располагались после всех остальных
Ответ Создать тему
Опции темы

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