Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/34: Рейтинг темы: голосов - 34, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 24.04.2015
Сообщений: 13
1

Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные

06.02.2016, 05:57. Показов 6831. Ответов 14
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Даны целые числа n одномерного массива. Полная программа на c++.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2016, 05:57
Ответы с готовыми решениями:

Расположить элементы массива так, чтобы сначала были отрицательные и нули, а потом положительные
Дан массив из 12 элементов. Расположить элементы так,чтобы сначала были отрицательные и нули,а...

Преобразовать массив так, чтобы сначала располагались все положительные элементы, а потом отрицательные
Помогите пжлст решить задачу:cry: В одномерном массиве, состоящем из n целых эл-ов, вычислить:...

Переписать файл так, чтобы сначала шли положительные, потом отрицательные числа
Подскажите, пожалуйста, нужно ли что-то поменять или добавить в программу? Дан файл f,...

Переписать файл целых чисел так, чтобы сначала шли положительные, а потом - отрицательные
Дан файл целых чисел F. Используя вспомогательный файл H переписать компоненты файла F файл G так,...

14
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
06.02.2016, 18:32 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
#include<iostream>
using namespace std;
 
int main()
{
    const int SZ=5;
    int s[SZ];
    cout<<"Исходный массив: ";
    for (int i=0;i<SZ;i++){
    cin>>s[i];}
    int n=0;
    do{
    for (int i=0;i<SZ;i++){
    int temp;
    if (s[i]<0){
    temp=s[i];
    s[i]=s[i+1];
    s[i+1]=temp;
    ;}}n++;
    }while (n<SZ);
    cout<<"Полученный массив: ";
    for (int i=0;i<SZ;i++){
    cout<<s[i]<<" ";}
    system("pause");
}
Добавлено через 9 минут
Массив на 5 элементов, можно и больше, изменив его размер SZ=5. Можно, что бы пользователь сам задавал размер.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.02.2016, 18:53 3
Sanzhar_1996,
Полная программа на c++.
Вызов принят.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
#include <algorithm>
#include <array>
#include <iterator>
//----------------------------------------------------------
using namespace std;
//----------------------------------------------------------
int main()
{
    array<int,10> arr = { -1,5,-2,3,8,-6,9,0,4,-7 };
    copy(arr.begin(),arr.end(),ostream_iterator<int>(cout," "));
    sort(arr.begin(),arr.end(),[](int x,int y) {
        return x > y;
    });
    copy(arr.begin(),arr.end(),ostream_iterator<int>(cout," "));
    cin.get();
    return 0;
}
Добавлено через 3 минуты
Или вам сортировку не по убыванию надо, а просто чтобы сначала положительные,а потом отрицательные?
0
100 / 52 / 39
Регистрация: 15.12.2015
Сообщений: 329
06.02.2016, 19:32 4
я так понимаю, создателю темы нужна наиболее быстрая сортировка, которая выполняет заданные действия без не чего лишнего
Вот эта функция за один проход выполнит требуемый действия:
C++
1
2
3
4
5
6
7
8
9
10
11
void sort(int *a, int length)
{
int negative=0;
     for (int i = 0; i < length; i++)
if(a[i]<0)
{
                 int b = a[i];
                 a[i]= a[negative];
                 a[negative++] = b;
}
 }
0
0 / 0 / 0
Регистрация: 06.02.2016
Сообщений: 4
06.02.2016, 21:37 5
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
#include<iostream>
using namespace std;
 
int main()
{
    const int SZ=5;
    int s[SZ];
    cout<<"Исходный массив: ";
    for (int i=0;i<SZ;i++){
    cin>>s[i];}
    int n=0;
    do{
    for (int i=0;i<SZ;i++){
    int temp;
    if (s[i]<0){
    temp=s[i];
    s[i]=s[i+1];
    s[i+1]=temp;
    ;}}n++;
    }while (n<SZ);
    cout<<"Полученный массив: ";
    for (int i=0;i<SZ;i++){
    cout<<s[i]<<" ";}
    system("pause");
}
Добавлено через 9 минут
Массив на 5 элементов, можно и больше, изменив его размер SZ=5. Можно, что бы пользователь сам задавал размер.
Последний раз редактировалось Cadr; Сегодня в 19:23.
ваш код не работает и ничего не сортирует. просто выдает на экран введенные значения чисел.
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.02.2016, 21:39 6
Цитата Сообщение от Ivan_Rabin Посмотреть сообщение
ваш код
Чей?
0
What a waste!
1608 / 1300 / 180
Регистрация: 21.04.2012
Сообщений: 2,729
06.02.2016, 22:04 7
Цитата Сообщение от makfak Посмотреть сообщение
C++
1
sort(arr.begin(),arr.end(),[](int x,int y) { return x > y; });
Достаточно
C++
1
std::partition(arr.begin(), arr.end(), [] (int const value) { return value > 0; })
.
1
0 / 0 / 0
Регистрация: 24.04.2015
Сообщений: 13
06.02.2016, 22:05  [ТС] 8
Цитата Сообщение от makfak Посмотреть сообщение
Или вам сортировку не по убыванию надо, а просто чтобы сначала положительные,а потом отрицательные?
мне нужны сначала положительные,а потом отрицательные
0
Любитель чаепитий
3742 / 1798 / 566
Регистрация: 24.08.2014
Сообщений: 6,016
Записей в блоге: 1
06.02.2016, 22:06 9
gray_fox, Этого алгоритма я ещё не изучал просто.
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
06.02.2016, 22:12 10
Ivan_Rabin, Да вы что? Серьезно?
Миниатюры
Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные  
0
165 / 164 / 124
Регистрация: 19.01.2016
Сообщений: 594
Записей в блоге: 1
06.02.2016, 22:38 11
Ivan_Rabin, как вы заполняли массив?
C++
1
2
 for (int i=0;i<SZ;i++){
    cin>>s[i];}
О чем вам говорит?
0
Неэпический
17870 / 10635 / 2054
Регистрация: 27.09.2012
Сообщений: 26,737
Записей в блоге: 1
07.02.2016, 12:53 12
Цитата Сообщение от gray_fox Посмотреть сообщение
Достаточно
Дополню.
Если важен относительный порядок элементов,
то вместо std::partition понадобится std::stable_partition.
1
Комп_Оратор)
Эксперт по математике/физике
8949 / 4703 / 629
Регистрация: 04.12.2011
Сообщений: 13,999
Записей в блоге: 16
07.02.2016, 16:08 13
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
#include <iostream>
using namespace std;
void main()
{
    int arr[]={1,2,3,-4,5,6,-7,8,-9,10,11,12};  
    size_t size_arr=sizeof(arr)/sizeof(arr[0]);
    
    for(size_t i=0; i<size_arr; ++i)cout<<arr[i]<<" ";
    cout<<endl;
    int right=size_arr;
    int iter_count(0);
for(size_t i=0; i<size_arr; ++i)
{
if(arr[i]<0)
{
for(size_t j=right-1; j>i; --j)
{
if(arr[j]>0)
{
int tmp=arr[i];
arr[i]=arr[j];
arr[j]=tmp;
right=j;
break;
}
}
}
iter_count++;
}
for(size_t i=0; i<size_arr; ++i)cout<<arr[i]<<" ";
    cout<<endl;
    cout<<"number of iterations is "<<iter_count;
    cout<<endl;
    system("pause");
}
Передняя вилка восьмерит немного, но ездить можно.
0
Croessmah
07.02.2016, 19:05
  #14

Не по теме:

IGPIGP, форматирование отвалилось при езде? :D

0
IGPIGP
07.02.2016, 21:10     Распределить элементы массива так, чтобы сначала стояли положительные, а потом отрицательные
  #15

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
IGPIGP, форматирование отвалилось при езде?
форма, это вещь хорошая. Что и говорить: шапочка, футболка, лосины, туфли, - это то что делает велосипедиста ближе к небесам. Учитывая нашу общую вело-культуру.
Но главное это не форма. Главное это содержание. Что у программы, что у компьютера за неброской внешностью может скрываться удивительное содержание.
Как говорит одна моя знакомая IT-шница о своей машинке: -"Вот она, моя боевая PC-ха!". И люди к ней тянутся. :yes:

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.02.2016, 21:10

Сортировка массива: сначала положительные элементы, потом - отрицательные
Сделать динамическаий массив ,указатели си++ Балансовый отчет содержит N позиций.Распечатать...

Сортировка массива: сначала расположить положительные, а потом - отрицательные элементы
Проверьте пожайлуста мое решение :) . Эффективен ли вообще такой подход? Задание: Преобразовать...

Нужно поместить сначала положительные элементы массива Z в массив R, потом отрицательные
Здравствуйте. Такое задание: &quot;Нужно поместить сначала положительные элементы массива Z в массив R,...

Переставить элементы массива так, чтобы сначала шли нули, потом отрицательные, а затем положительные элементы
Дан одномерный массив, который содержит не более 60 вещественных чисел, среди которых есть...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru