Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
adiiiik
0 / 0 / 1
Регистрация: 09.04.2015
Сообщений: 43
#1

Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию - C++

06.07.2015, 19:28. Просмотров 633. Ответов 1
Метки нет (Все метки)

Задание: Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию. Использовать три метода сортировки.

http://www.cyberforum.ru/cpp-beginners/thread1210891.html
в конце нужно сделать примерно так: массив: -2, 0, 5, -4, 6, 1; отсортированный массив: -2, 0, 0, -4, 5, 6;
как это сделать?

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
void Vvod(int* arrA,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"arrA["<<i<<"]= ";
        cin >> arrA[i];
    }
}
void Print(int *arrA, int n)
{
    //cout<<"\nMassiv = ";
    for(int i = 0; i < n ;i++)
    {
        cout<<arrA[i]<< ", ";
    }
    cout<<endl;
}
void BubbleSortVozr(int *arrA, int n) //сортировка по возрастанию пузырек
{
    int pol=0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] < arrA[j])
            {
                pol = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = pol;
            }
        }
    }}
void BubbleSortUb(int* arrA, int n){ //сортировка по убыванию пузырек
    int otr = 0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] > arrA[j])
            {
                otr = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = otr;
            }
        }
    }
}
void SelectionSortPol (int* arrA, int n) { // сортировка методом простого выбора по возрастанию
  int min,pol;
  for (int i=0;i<n-1;i++) {
  min=i;
    for (int j=i+1;j<n;j++){
      if (arrA[j]<arrA[min])
        min=j;
     }
      pol=arrA[i];
      arrA[i]=arrA[min];
      arrA[min]=pol;
  }
}
void SelectionSortOtr (int* arrA, int n) { // сортировка методом простого выбора по убыванию
  int min,otr;
  for (int i=0;i<n-1;i++) {
  min=i;
    for (int j=i+1;j<n;j++){
      if (arrA[j]>arrA[min])
        min=j;
     }
      otr=arrA[i];
      arrA[i]=arrA[min];
      arrA[min]=otr;
  }
}
// сортировка методом простого включения по возраст
void InsertSortPol (int* arrA,int  n) {
  int  pol, j;
  for (int i=0;i<n;i++) {
    pol=arrA[i];
    for (int j=i-1; j>=0 && arrA[j]>pol; j--)
      arrA[j+1]=arrA[j];
      arrA[j+1]=pol;
  }
}
void InsertSortOtr (int* arrA,int  n) {
  int  otr, j;
  for (int i=0;i<n;i++) {
      otr=arrA[i];
    for (int j=i-1; j>=0 && arrA[j]<otr; j--)
      arrA[j+1]=arrA[j];
      arrA[j+1]=otr;
  }
}
int main()
{
    int arrA[100], n,Pol[100], Otr[100],pol=0, otr=0;
    cout << "Vvedite razmernost massivov: ";
    cin >> n;
    Vvod(arrA, n);
    Print(arrA, n);
    for (int i=0; i<n; i++)
        if (arrA[i]>=0)
        {Pol[pol]=arrA[i];
            pol++;
        }
        else
        {
            Otr[otr]=arrA[i];
            otr++;
        }
 
    BubbleSortVozr(Pol,pol);
    cout << "\nMetod puzirka: ";
    cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
    BubbleSortUb(Otr,otr);
    cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr, otr);
    SelectionSortPol(Pol, pol);
    cout << "\n\nMetod prostogo vibora:";
    cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
    SelectionSortOtr(Otr, otr);
    cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr,otr);
 InsertSortPol(Pol, pol);
 cout << "\n\nMetod prostogo vklucheniya:";
 cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
 InsertSortOtr(Otr, otr);
 cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr,otr);
 
 
 for (int i=0; i<n; i++)
     for (int j=0; j<n;j++)
         for (int u=0;u<n;u++)
     {if (arrA[i]> 0 && Pol[j]>0 && arrA[i]> Pol[j])
 arrA[i]=Pol[j];
if (arrA[i] < 0 && Otr[u]<0 && arrA[i]<Otr[u])
         arrA[i]= Otr[u];}
 
 Print(arrA,n);
 
 
 
    return 0;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 19:28
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию (C++):

если в массиве положительные элементы или отрицательные элементы будут соседями
очень нужна помощь! помогите пожалуйста! если в массиве a положительные...

В одномерном массиве все отрицательные элементы заменить нулями и упорядочить элементы массива по убыванию
В одновимірному масиві всі від’ємні елементи замінити нулями і впорядкувати...

Определить, чередуются ли в массиве положительные и отрицательные элементы
Создать одномерный динамический массив размера n, где n вводит пользователь....

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

Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z
Расположить в массиве R сначала положите ,а затем отрицательные элементы...

1
adiiiik
0 / 0 / 1
Регистрация: 09.04.2015
Сообщений: 43
06.07.2015, 22:03  [ТС] #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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#include <iostream>
#include <cmath>
#include <iomanip>
 
using namespace std;
void Vvod(int* arrA,int n)
{
    for(int i=0;i<n;i++)
    {
        cout<<"arrA["<<i<<"]= ";
        cin >> arrA[i];
    }
}
void Print(int *arrA, int n)
{
    //cout<<"\nMassiv = ";
    for(int i = 0; i < n ;i++)
    {
        cout<<arrA[i]<< ", ";
    }
    cout<<endl;
}
void BubbleSortVozr(int *arrA, int n) //сортировка по возрастанию пузырек
{
    int pol=0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] < arrA[j])
            {
                pol = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = pol;
            }
        }
    }}
void BubbleSortUb(int* arrA, int n){ //сортировка по убыванию пузырек
    int otr = 0;
    for(int i = 0; i < n - 1; ++i)
    {
        for(int j = 0; j < n - 1; ++j)
        {
            if (arrA[j + 1] > arrA[j])
            {
                otr = arrA[j + 1];
                arrA[j + 1] = arrA[j];
                arrA[j] = otr;
            }
        }
    }
}
 
int main()
{
    int arrA[100], n,Pol[100], Otr[100],pol=0, otr=0;
    cout << "Vvedite razmernost massivov: ";
    cin >> n;
    Vvod(arrA, n);
    Print(arrA, n);
    for (int i=0; i<n; i++)
        if (arrA[i]>=0)
        {Pol[pol]=arrA[i];
            pol++;
        }
        else
        {
            Otr[otr]=arrA[i];
            otr++;
        }
 
    BubbleSortVozr(Pol,pol);
    cout << "\nMetod puzirka: ";
    cout << "\nPologitelnie elementy po vozrastaniyu: " ; Print(Pol,pol);
    BubbleSortUb(Otr,otr);
    cout << "Otricatelnie elementy po ubivaniu: " ; Print(Otr, otr);
   
 for(int i=0; i<n;i++)
      for(int j=0; j<pol;pol++)
for(int u=0; u <otr; otr ++
 
        if(arrA[i]>0 )
          (arrA[i]=Pol[j]);
        else 
          (arrA[i]=Otr[u]);
 
 
    Print(arrA,n);
return 0;
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2015, 22:03
Привет! Вот еще темы с решениями:

В массиве сначала расположить все положительные элементы,а потом отрицательные
1.В одномерному массиве,что состоит из N целых элементов вычислить:...

Расположить в массиве сначала отрицательные, а затем положительные элементы другого массива
Расположить в массиве R сначала отрицательные, а затем положительные элементы...

Разместить в массиве все положительные элементы в начале, отрицательные - в конце, посередине - нули
Всем доброго времени суток! Большая просьба помочь написать программу. Нужно...

Расположить в массиве сначала все отрицательные элементы и нули, потом - положительные (Pascal -> C++)
Помогите пожалуйста, нужно перевести программу с pascal на С++. Есть два...


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

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

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