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

Поменять местами положительные и отрицательные элементы

23.12.2018, 00:51. Показов 1913. Ответов 5

Author24 — интернет-сервис помощи студентам
Условие: Дан массив, в котором количество отрицательных элементов равно количеству положительным.
Поменяйте местами первый отрицательный и первый положительный,
второй отрицательный и второй положительный и так далее.
Не могу правильно решить, пж помогите.
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
int main()
{
    setlocale(LC_ALL, "rus");
    srand(time(NULL));
 
int const length = 10;
int k = -5, i, j;
int arr[length];
for (i = 0; i < length / 2; i++)
{
    arr[i] = k;
    k++;
}
k = 1;
for (i = length / 2; i < length; i++)
{
    arr[i] = k;
    k++;
}
for ( i = 0; i < length; i++)
{
    k = rand() % length;
    j = rand() % length;
    swap(arr[j], arr[k]);
}
for (i = 0; i < length; i++)
{
    cout << "arr[" << i << "]= " << arr[i] << endl;
}
//--------------------------- stage 2 ------------------------------------
int index_i1, index_i2;
for (i = 0; i < length / 2; i++)
{
    for ( j = i; j < length; j++)
    {
        if (arr[j] < 0)
        {
            index_i1 = j;
            break;
        }
    }
    for ( k = i; k < length; k++)
    {
        if (arr[k] > 0)
        {
            index_i2 = k;
            break;
        }
    }
    swap(arr[index_i1], arr[index_i2]);
}
cout << "\nModified array\n\n";
for (i = 0; i < length; i++)
{
    cout << "arr[" << i << "]= " << arr[i] << endl;
}
 
return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.12.2018, 00:51
Ответы с готовыми решениями:

Поменять местами отрицательные элементы массива
Помогите с задачей , пожалуйста. Необходимо ввести массив , и поменять местами отрицательные...

Поменять местами отрицательные элементы массива
Привет. Была дана лаб работа с массивами. Задание было такое что вводится массив, а на выводе...

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

Поменять местами третьи отрицательные элементы массива
1.нужно создать рандомный массив, это получилось... #include &lt;iostream&gt; #include &lt;ctime&gt; #include...

5
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
23.12.2018, 10:57 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
#include <iostream>
#include <iterator>
#include <vector>
 
using namespace std;
 
int main() {
  int n;
  cin >> n;
 
  vector<int> a(n);
 
  vector<int> pos;
  vector<int> neg;
 
  for (int i = 0; i < n; ++i) {
    cin >> a[i];
 
    if (a[i] > 0) {
      pos.push_back(i);
    } else {
      neg.push_back(i);
    }
  }
 
  for (int i = 0; i < n / 2; ++i)
    swap(a[pos[i]], a[neg[i]]);
 
  copy(a.cbegin(), a.cend(), ostream_iterator<int>(cout, " "));
}
1
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
23.12.2018, 18:08  [ТС] 3
ReDoX,
Я векторы ещё на проходил. Реши пожалуйста с помощью обычных массивов.
0
447 / 333 / 172
Регистрация: 01.07.2015
Сообщений: 1,162
23.12.2018, 18:11 4
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
#include <iostream>
#include <iterator>
#include <vector>
 
using namespace std;
 
int main() {
  int n;
  cin >> n;
 
  int* a = new int[n];
 
  int* pos = new int[n / 2];
  int* neg = new int[n / 2];
 
  for (int i = 0, j = 0, k = 0; i < n; ++i) {
    cin >> a[i];
 
    if (a[i] > 0) {
      pos[j++] = i;
    } else {
      neg[k++] = i;
    }
  }
 
  for (int i = 0; i < n / 2; ++i) swap(a[pos[i]], a[neg[i]]);
 
  copy(a, a + n, ostream_iterator<int>(cout, " "));
}
1
83 / 20 / 0
Регистрация: 30.10.2018
Сообщений: 106
23.12.2018, 18:14 5
Ivan _pupkin, векторы легче массивов
0
3 / 3 / 1
Регистрация: 17.12.2018
Сообщений: 257
23.12.2018, 22:27  [ТС] 6
Цитата Сообщение от kusancho Посмотреть сообщение
Ivan _pupkin, векторы легче массивов
Надеюсь позже изучить векторы
0
23.12.2018, 22:27
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2018, 22:27
Помогаю со студенческими работами здесь

Поменять местами отрицательные элементы массива с положительными
Поменять местами отрицательные элементы массива с положительными. Замену остановить, если...

Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы
помогите дорешать Matrix53. Дана матрица размера M × N. Поменять местами столбец с номером 1 и...

Поменять местами столбец с номером 1 и последний из столбцов, содержащих только положительные элементы
Matrix53. Дана матрица размера M × N. Поменять местами столбец с номером 1 и последний из столбцов,...

Поменять местами столбец с номером N и первый из столбцов, содержащих только отрицательные элементы
Дана матрица размера M × N. Поменять местами столбец с номером N и первый из столбцов, содержащих...


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

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