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

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

Войти
Регистрация
Восстановить пароль
 
adiiiik
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 42
#1

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

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

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

в конце нужно сделать примерно так: массив: -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;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2015, 19:28     Отсортируйте в массиве положительные элементы по возрастанию, отрицательные – по убыванию
Посмотрите здесь:

Отсортируйте в массиве нечетные элементы по убыванию различными сортировками - C++
Общее задание: Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов. 1) Отсортируйте...

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

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

Расположить вначале отрицательные, а затем положительные элементы в массиве - C++
Помогите пожалуйста. не знаю как сделать его без помощи доп массива. Дан массив целых чисел A(n), n&lt;=400. Разработать программу которая...

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

Расположить в массиве R сначала положительные, а затем отрицательные элементы массива Z - C++
Расположить в массиве R сначала положите ,а затем отрицательные элементы массива Z. матрица F(10,8) помогите решить пожалуйста. вообще...

Расположить в массиве сначала отрицательные, а затем положительные элементы другого массива - C++
Расположить в массиве R сначала отрицательные, а затем положительные элементы массива Z. Массив Z(20). Нашел такое решение #include...

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

Расположить в массиве сначала все отрицательные элементы и нули, потом - положительные (Pascal -> C++) - C++
Помогите пожалуйста, нужно перевести программу с pascal на С++. Есть два вида кода: const n=10; var a,b:array of integer; ...

Отсортируйте элементы массива по возрастанию их модуля - C++
Отсортируйте элементы массива по возрастанию их модуля

В однородном массиве все отрицательные элементы увеличить на 2, а все положительные заменить на 1 - C++
помогите пожалуйста написать программу. В массиве все отрицательные элементы увеличить на 2, а все положительные заменить на 1

В массиве заменить все отрицательные элементы на минимальный элемент, а все положительные – на максимальный - C++
В массиве из 10 целых чисел заменить все отрицательные элементы на минимальный элемент, а все положительные – на максимальный.


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
adiiiik
0 / 0 / 0
Регистрация: 09.04.2015
Сообщений: 42
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;
}
Ответ Создать тему
Опции темы

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