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

Расположить вначале отрицательные, а затем положительные элементы в массиве - C++

Восстановить пароль Регистрация
 
JustSay
0 / 0 / 0
Регистрация: 23.07.2013
Сообщений: 17
05.07.2014, 16:54     Расположить вначале отрицательные, а затем положительные элементы в массиве #1
Помогите пожалуйста. не знаю как сделать его без помощи доп массива.
Дан массив целых чисел A(n), n<=400. Разработать программу которая превращает этот массив так, чтобы в начале размещались все отрицательные, а потом все положительные элементы в порядке их наступления в изначальном массиве. Дополнительный массив не использовать.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.07.2014, 16:54     Расположить вначале отрицательные, а затем положительные элементы в массиве
Посмотрите здесь:

Расположить в массиве R[10] сночала положительные, а затем отрицательные элелементы массива Z[10] C++
C++ Расположить элементы одномерного массива в следующем порядке: сначала отрицательные, затем нули, потом положительные
C++ Написать рекурсивную функцию, которая вначале печатает все отрицательные числа, а затем все положительные числа
Дан массив A[1.50], элементы которого отличны от нуля. Расположить их в таком порядке, чтобы первыми были все положительные элементы, а затем - все о C++
Записать в другой файл сначала отрицательные элементы, а затем положительные C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TyLinka
32 / 32 / 11
Регистрация: 02.02.2012
Сообщений: 177
05.07.2014, 17:20     Расположить вначале отрицательные, а затем положительные элементы в массиве #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
#include <iostream>
#include <algorithm>
 
using namespace std;
 
int main()
{
    const int n = 400;
    int a[n];
    for (int i=0; i<n; i++)
        cin >> a[i];
    for (int i=0; i<n-1; i++)
        if (a[i] > 0)
            for (int j=i+1; j<n; j++)
                if (a[j] < 0)
                {
                    swap(a[i], a[j]);
                    break;
                }
    for (int i=0; i<n; i++)
        cout << a[i] << " ";
    
}
Хм.. только здесь несовсем первоначальный порядок сохраняется
nmcf
4298 / 3719 / 1252
Регистрация: 14.04.2014
Сообщений: 14,542
05.07.2014, 17:33     Расположить вначале отрицательные, а затем положительные элементы в массиве #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
25
int m[400], i, j, n, t;
 
i = 0;
while(i < n)
{
    if(m[i] > 0)
    {
        j = i;
        ++i;
        while(i < n)
        {
            if(m[i] < 0)
            {
                t = m[j];
                m[j] = m[i];
                for(int k = i; k > j + 1; k--) m[k] = m[k - 1];
                m[j + 1] = t;
                i = j;
                break;
            }
            ++i;
        }
    }
    ++i;
}
n - количество элементов в массиве.
rutelun
147 / 73 / 15
Регистрация: 31.05.2014
Сообщений: 215
05.07.2014, 17:45     Расположить вначале отрицательные, а затем положительные элементы в массиве #4
TyLinka, немного переделал ваш код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const int n = 400;
    int a[n];
    for (int i = 0; i<n; i++)
        cin >> a[i];
    for (int i = 0; i<n - 1; i++)
        if (a[i] < 0)
            for (int j = i - 1; j >= 0; j--)
                if (a[j] > 0)
                {
                        swap(a[i], a[j]);
                        i = j;
                }
                else
                {
                    break;
                }
    for (int i = 0; i<n; i++)
        cout << a[i] << " ";
 
    return 0;
Yandex
Объявления
05.07.2014, 17:45     Расположить вначале отрицательные, а затем положительные элементы в массиве
Ответ Создать тему
Опции темы

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