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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Милана Сайнарое
Сообщений: n/a
#1

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

01.12.2012, 01:45. Просмотров 791. Ответов 4
Метки нет (Все метки)

Сгруппировать положительные элементы в
начале, а отрицательные в конце массива
без сохранения порядка в каждой группе
за O(N) операций.спасибо заранее)))))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2012, 01:45     Сгруппировать элементы массива
Посмотрите здесь:

C++ Массив. Положительные элементы массива а, записанные в том же порядке + отрицательные элементы массива b, записанные в обратном порядке
C++ Получить массив, расположив в его начале элементы массива A, а затем — элементы массива B
C++ Вывести элементы массива в виде таблицы и переставить его элементы местами
C++ Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива
C++ Удалить из массива, в котором все элементы различны, максимальный и минимальный элементы
C++ Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции
C++ Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции
C++ Парные элементы массива уменьшить вдвое, нечетные элементы заменить их квадратом
C++ Разделить элементы одного массива на элементы другого массива, записать результат в третий массив
C++ Если элементы массива не образуют убывающей последовательности, то заменить его отрицательные элементы
C++ Переписать отрицательные элементы массива Х в массив У, а положительные элементы массива Х - в массив Z
Сгруппировать повторяющиеся соседние элементы последовательности C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
01.12.2012, 02:08     Сгруппировать элементы массива #2
C++
1
2
3
4
5
6
7
8
int arr[size];
int* left=arr;
int* right=arr+size-1;
while (left<right){
  while(*left++>0);
  while(*right--<0);
  swap(left, right);
}
Добавлено через 12 минут
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
#include <iostream>
#include <ctime>
#include <cstdlib>
void print(int* arr, int size){
    for(int i=0; i<size; i++)
        std::cout<<arr[i]<<", ";
    std::cout<<std::endl;
}
void generate(int* arr, int size){
    srand(time(NULL));
    for(int i=0; i<size; i++)
        arr[i]=rand()%100-50;
}
void richte_die_ordnung(int* arr, int size){
    int* left=arr;
    int* right=arr+size-1;
    while (left<right){
        while(v*left>0) left++;
        while(*right<0) right--;
        std::swap(*left, *right);
 
    }
}
int main()
{
    const int size=20;
    int buffer[size];
    generate(buffer, size);
    print(buffer, size);
    richte_die_ordnung(buffer, size);
    print(buffer, size);
    system("pause");
    return 0;
}
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
01.12.2012, 03:22     Сгруппировать элементы массива #3
Kuzia domovenok, еще #include <algorithm>
Kuzia domovenok
 Аватар для Kuzia domovenok
1886 / 1741 / 117
Регистрация: 25.03.2012
Сообщений: 5,916
Записей в блоге: 1
01.12.2012, 03:31     Сгруппировать элементы массива #4
Цитата Сообщение от MrGluck Посмотреть сообщение
еще #include <algorithm>
Сейчас специально проверил в MSVS. У меня и так работает. Правда, в строке 15 я клавишу 'v' случайно нажал, а исправить уже нельзя.
Ой, нет не совсем работает. 2 центральных элемента не переставляет
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6227 / 3472 / 424
Регистрация: 29.11.2010
Сообщений: 9,178
01.12.2012, 03:53     Сгруппировать элементы массива #5
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Сейчас специально проверил в MSVS. У меня и так работает. Правда, в строке 15 я клавишу 'v' случайно нажал, а исправить уже нельзя.
Ой, нет не совсем работает. 2 центральных элемента не переставляет
http://www.cplusplus.com/reference/cstdlib/ как видите, функция swap не определена.
http://en.cppreference.com/w/cpp/algorithm/swap а тут написано, что живет она в algorithm, что логично, т.к. функция шаблонная и определена в STL.
Yandex
Объявления
01.12.2012, 03:53     Сгруппировать элементы массива
Ответ Создать тему
Опции темы

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