0 / 0 / 0
Регистрация: 21.10.2015
Сообщений: 23
1

Переставить в массиве все отрицательные элементы в начало массива, сохраняя относительный порядок

29.03.2016, 19:02. Показов 6892. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проштудировал весь форум.Решений много взял по примеру написал код, ошибок нет но ответа нужного нет помогите найти где не разобрался. С синтаксисом мало знаком могу недопонимать буду уточнять.
Собственно вот задачи
1. Дан одномерный массив. Переставить в нем все отрицательные
элементы в начало массива, а остальные – в конец с сохранением порядка
следования.



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
#include <iostream>
 
using namespace std;
 
int main()
 
 
 
{
int n,a[100],buf;
cout<<"VVEDITE CHISLO N"<<endl;
cin>>n;
for(int i=0;i<n;i++){
    cout<<"vvedite "<<i+1<<"element"<<endl;
    cin>>a[i];}
 
for(int i=n-1;i>=0;i--)
if(a[i]<0)
{
buf=a[i];
for(int j=i;j>0;j--){
a[i]=a[i-1];
a[0]=buf;
}
}
 
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2016, 19:02
Ответы с готовыми решениями:

Сдвинуть все отрицательные элементы с в начало массива,сохраняя их порядок между собой, а все положительные элементы
Дан целочисленный список с количеством элементов 2n, не содержащий нулей. Сдвинуть все...

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

Разместить сначала все положительные элементы массива, а затем все отрицательные и нули, сохраняя порядок их следования
Дан массив вещественных чисел, содержащий 20 элементов. Записать в этот же массив сначала все...

Переставить все отрицательные элементы в начало массива
Здравствуйте, помогите пожалуйста решить такую задачку! Пусть A - одномерный массив N...

2
19 / 19 / 14
Регистрация: 21.03.2016
Сообщений: 60
29.03.2016, 19:41 2
Ох, посмотрел я Ваш код. Если цензурно, то:
1) Если размер вводится с клавиатуры, то используются динамические массивы, что позволяет не ограничиваться, например, как у Вас, в 100 элементов.

2) Код форматируют обычно отступами, а то читать невозможно.

3) У Вас не закрывается тело функции main

Дальше не стал смотреть, ибо слишком уже...

Проще заного сделать

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
40
41
42
43
44
45
#include <iostream>
#include <time.h>
 
using namespace std;
 
 
int main()
{
    int a[100];
 
    srand(time(NULL));
    cout << "Array before: " << endl;
    for (int i = 0; i < 100; i++)
    {
        a[i] = rand() % 100 - 50;
        cout << a[i] << " ";
    }
    cout << endl;
 
    for (int i = 0; i < 100; i++)
    {
        if (a[i] > 0)
        {
            for (int j = i; j < 100; j++)
            {
                if (a[j] < 0)
                {
                    int buf = a[j];
                    a[j] = a[i];
                    a[i] = buf;
                }
            }
        }
    }
 
    cout << "~~~Array after~~~" << endl;
 
    for (int i = 0; i < 100; i++)
    {
        cout << a[i] << " ";
    }
    cout << endl;
    cin.get();
    return 0;
}
Переставить в массиве все отрицательные элементы в начало массива, сохраняя относительный порядок


UPD: Не заметил, что требуется сохранение порядка. Тогда прикрутите сами, ибо переделывать лень уже.
0
513 / 405 / 188
Регистрация: 08.04.2013
Сообщений: 1,731
29.03.2016, 20:02 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
26
27
28
29
30
31
32
33
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>
using namespace std;
 
int main ()
{
    srand((unsigned)time(NULL));
    setlocale(LC_ALL,"RUS");
    vector <int> v;
    int c;
    cout << "Введите кол-во элементов: ";
    cin >> c;
    int a[c];
    for (int i=0; i<c; ++i)
    {
        a[i]= (rand()%10-5);
        cout << a[i] <<" ";
        if (a[i]<0) v.push_back(a[i]);
    } 
    cout << endl; 
        for (int i=0; i<c; ++i)
        {
            if (a[i]>=0) v.push_back(a[i]);
        }
 
    vector<int>:: iterator p=v.begin(); // доступ через итератор
    while (p!= v.end())
    { cout << *p << " "; p++;}
    cout << "\n" << endl;
 
}
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.03.2016, 20:02
Помогаю со студенческими работами здесь

В одномерном массиве все отрицательные элементы переместить в начало массива
в одномерном массиве все отрицательные элементы переместить в начало массива, а остальные - в конец...

Расположить сначала все отрицательные элементы, затем положительные и нули, сохраняя первоначальный порядок их
Если организовать такой цикл и такую &quot;сортировку&quot;, то все отрицательные встают &quot;перед&quot; остальными,...

В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные – в конец...

Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все отрицательные - в начало массива C (n). Подсчитать количес
Данный массив A (n). Все положительные его элементы поместить в начало массива B (n), а все...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru