Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
1

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

07.01.2015, 18:07. Показов 2141. Ответов 2
Метки нет (Все метки)

Помогите с задачей , пожалуйста.
Необходимо ввести массив , и поменять местами отрицательные элементы массива , первый со вторым , третий с четвертым и т.д. Если в массие меньше двух отрицательных элементов , изменений не вносить.
Мои наработки :
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream.h>
int main()
{
cout << "Enter count elements :" << endl;
int n , count = 0;
cin >> n;
cout << "Enter elements :" << endl;
int *mas=new int[n];
for(int i=0;i<n;i++)
cin >> mas[i];
for (int i = 0;i<n;i++)
if (mas[i]<0)
count++;
if (count =>2)
for (int i=0;i<n;i++) {
 
 
}
 
        return 0;
}
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 18:07
Ответы с готовыми решениями:

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

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

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

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

2
98 / 80 / 93
Регистрация: 03.12.2013
Сообщений: 217
07.01.2015, 20:17 2
Лучший ответ Сообщение было отмечено romalikons как решение

Решение

можно как-то так,если по быстрому делать,первое что пришло в голову:
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
#include <iostream>
 
using namespace std;
 
int main()
{
    cout << "Enter count elements :" << endl;
    int n, count = 0;
    cin >> n;
    cout << "Enter elements :" << endl;
    int *mas = new int[n];
    for (int i = 0; i < n; i++)
        cin >> mas[i];
    for (int i = 0; i < n; i++)
    if (mas[i] < 0)
        count++;
    if (count < 2)                                              //если < 2 отрицательных елементов - выводим
    {                                                           //сообщение, массив без изменений...
        cout << "Izminenii ne vnosim\n Vuhodnoi massiv: ";
        for (int i = 0; i < n; i++)
            cout << mas[i] << " ";
        cout << endl;
 
        return 0;                                               //...и выходим с программы
    }
 
        //в другом случае(здесь можно писать else, но нет смысла, так как если выполниться условия if программа сюда не дойдет
    cout << "Vhodnoi massiv: ";     //вывождим начальный массив
    for (int i = 0; i < n; i++)
        cout << mas[i] << " ";
    cout << endl;
    int a(-1), b(-1), c(0);         //переменная с - для свапа двох значений, а и b для сохранения места в массиве отрицательных елем
                            //инициализируем а и b для -1, так как нам пригодиться ето для проверки есть ли два отрицательные елемента для замены
    for (int i = 0; i <= n; i++)    //тут надо делать на один проход больше чем розмер массива,так как иначе два последних
    {                               //елемента не поменяються. Можно проходить по длинне массива и потом добавить if еще раз после цыкла
        if (a >= 0 && b >= 0)       //если обе переменные больше или равны 0, то делаем свап
        {
            c = mas[a];
            mas[a] = mas[b];
            mas[b] = c;
            a = b = -1;         //и делаем их отрицательными
        }
        if (i < n && mas[i] < 0)        //тут я прописал условие что-бы не зайти за границы массива  
        {                           //если есть отрицательный елемент - записываем в одну из переменных его(которая еще меньше 0)
            if (a < 0)
                a = i;
            else
                b = i;
        }
        /*получаеться что мы делаем две переменные отрицательными. Потом встретив отрицательный елемент первая переменная получает
        значение больше или равно 0(неотрицательное,место елемента в массиве), встетив другое отрицательное число в массиве
        записываем его в оставшуюся отрицательную переменную. В начале каждого цыкла проверка, если две переменные нертрицательные - 
        делаем перемену(свап), а переменные а и b снова отрицательными. Если вконце одна переменная будет больше равно 0, а вторая - 7
        отрицательной, ничего не произойдет.*/
 
    }
    cout << "Vuhodnoi massiv: ";
    for (int i = 0; i < n; i++)
        cout << mas[i] << " ";
    cout << endl;
    
    return 0;
}
1
0 / 0 / 0
Регистрация: 03.10.2013
Сообщений: 78
08.01.2015, 00:38  [ТС] 3
огромное спасибо ) особенно за комменты , все четко и понятно )
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.01.2015, 00:38

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Поменять местами положительные и отрицательные элементы
Условие: Дан массив, в котором количество отрицательных элементов равно количеству положительным. ...

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

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

Поменять местами первый и последний элементы. Все единичные элементы массива заменить нулями
Люди добрые, помогите плиз с задачками. В массиве Р, размерности 150 150. поменять местами первый...


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

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

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