Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Возведение многочлена в степень https://www.cyberforum.ru/ cpp-beginners/ thread1348142.html
Есть класс polynom(int degrees, float *coefficient), где degrees — степень многочлена, а coefficient — массив коэфффициентов. Подскажите алгоритм возведения такого многочлена в степень.
C++ Дать пользователю возможность вводить информацию, какие данные нужно обработать
Задание: Объявите класс TString, создающий тип – строку. Элементы – данные класса: - указатель на строку; - длина строки. Предусмотрите конструкторы класса: - по умолчанию; - получающий...
C++ Найти номер наибольшего элемента массива
Мне необходимо найти под каким номером или номерами находится максимальный или максимальные элементы заданного пользователем массива. Количества максимальных чисел элемента подсчитывается от всей...
C++ Дописать оболочку программ Следующие программы надо доделать до рабочего состояния, т.е. просто дописать оболочку: 1) В матрице поменять местами min и max min=max=a for(i=0;i<n;i++) if(min<=a){ min=a; imin=i; } }... https://www.cyberforum.ru/ cpp-beginners/ thread1348126.html
C++ Перегрузка операторов для класса polynom https://www.cyberforum.ru/ cpp-beginners/ thread1348111.html
Создаю класс полиномов (polynom), в нём надо перегрузить ряд операторов. Где-то нашёл пример, где оператор сложения перегружается так: polynom polynom::operator + (const polynom &t) { int i;...
C++ Нужно разобраться в программе (конструкторы)
Задание Объявите класс TCar, создающий тип – автомобиль. Элементы – данные класса – название автомобиля, год выпуска. Предусмотрите конструкторы класса: - по умолчанию; - получающий параметры;...
Класс "длинные числа" C++
Нужно создать класс длинных чисел с конструкторами, перегрузками операций и прочее. Само число вводится при помощи строки, которая затем преобразуется в массив. Беда в том, что я не знаю, как это...
C++ Иерархия объектов и динамические списки внутри класса собственно есть задание Иерархия объектов создается следующим образом (на примере ФАКУЛЬТЕТА): а) создается пустой ФАКУЛЬТЕТ, б) создается пустая КАФЕДРА, в) создаются ПРЕПОДАВАТЕЛИ и включаются в... https://www.cyberforum.ru/ cpp-beginners/ thread1348038.html
C++ Поиск точек сочленения в графе с помощью алгоритма Краскала https://www.cyberforum.ru/ cpp-beginners/ thread1348033.html
Добрый день. Подскажите, как реализовать поиск точек сочленения в графе с помощью алгоритма Краскала. Сам алгоритм реализован: из заданного наугад графа выводит остовные деревья. Как теперь найти...
C++ Перегрузка операторов При перегрузке операторов арифметических действий советуют += (и подобные) делать членами класса, а операторы + (и подобные) делать не членами и определять через +=. Часто в пример приводят << -... https://www.cyberforum.ru/ cpp-beginners/ thread1348025.html
98 / 80 / 93
Регистрация: 03.12.2013
Сообщений: 217
07.01.2015, 20:17 0

Поменять местами отрицательные элементы массива - C++ - Ответ 7078162

07.01.2015, 20:17. Показов 2167. Ответов 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;
}


Вернуться к обсуждению:
Поменять местами отрицательные элементы массива C++
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.01.2015, 20:17
Готовые ответы и решения:

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

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

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

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

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