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

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

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

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

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

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

Сгруппировать повторяющиеся соседние элементы последовательности - C++
Задана последовательность целых чисел. Требуется сгруппировать повторяющиеся соседние элементы, как в примерах. Вход 7 1 1...

Создать два новых массива, в один из которых поместить положительные элементы массива, а в другой отрицательные и нулевые элементы - C++
Написать программу , которая вводит с клавиатуры массив из N вещественных чисел , создает два новых массива , в один из которых помещает...

Получить третий массив C[15] по правилу: вначале элементы первого массива, затем элементы второго массива - C++
Даны массивы A, B. Нужно получить третьи массив C состоящий: вначале элементы первого массива, затем элементы второго массива.

Вывести элементы массива на промежутке [ a,b ], вычислить количество элементов массива, заменить все положительные элементы - C++
В одномерном массиве, состоящем из n вещественных элементов, – вывести на печать элементы массива, значения которых не принадлежат...

Разделить элементы одного массива на элементы другого массива, записать результат в третий массив - C++
Как разделить элементы одного массива на элементы другого массива? есть массив a и есть массив b. размеры a=b. ввожу новый массив,...

одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец массива in c++ - C++
одномерный массив. Все его элементы, не равные нулю, переписать, сохраняя их порядок в начало массива, а нулевые элементы в конец...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 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Эксперт С++
7209 / 4375 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
01.12.2012, 03:22 #3
Kuzia domovenok, еще #include <algorithm>
Kuzia domovenok
1891 / 1746 / 118
Регистрация: 25.03.2012
Сообщений: 5,924
Записей в блоге: 1
01.12.2012, 03:31 #4
Цитата Сообщение от MrGluck Посмотреть сообщение
еще #include <algorithm>
Сейчас специально проверил в MSVS. У меня и так работает. Правда, в строке 15 я клавишу 'v' случайно нажал, а исправить уже нельзя.
Ой, нет не совсем работает. 2 центральных элемента не переставляет
MrGluck
Модератор
Эксперт CЭксперт С++
7209 / 4375 / 638
Регистрация: 29.11.2010
Сообщений: 11,887
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.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2012, 03:53
Привет! Вот еще темы с ответами:

Получить массив, расположив в его начале элементы массива A, а затем — элементы массива B - C++
Помогите решить такую вот задачку (Даны массивы A и B. Получить массив C, расположив в его начале элементы массива A, а затем — элементы...

Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции - C++
Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции, при этом 3 элемента массива Х перемещаются в начало

Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции - C++
Записать элементы массива Х в массив У, сместив элементы массива Х вправо на 3 позиции

Сформировать и вывести на экран новый массив, который будет содержать вначале все элементы массива A(0), затем все элементы массива B(4) - C++
Здравствуйте! Помогите написать парочку программ... 3. Даны массивы A(0) и B(4). Сформировать и вывести на экран новый массив,...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
01.12.2012, 03:53
Ответ Создать тему
Опции темы

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