2. ввести в массив n произвольных чисел (n< =30) отсортировать отрицательные по убыванию, положительные – по возрастанию, оставив отрицательные на местах, принадлежащих отрицательным, а положительные – на местах, принадлежащих положительным. вывести на экран исходный и полученный массивы. дополнительных массивов не использовать.

nik869 nik869    3   27.07.2019 09:00    0

Ответы
zubkovnikita zubkovnikita  13.08.2020 23:15
В C++ работает этот код. Других языков практически не знаю.
#include <iostream>
int main()
{
    using namespace std;
    const int n = 8;
    double Arr[n] = { 122.3, 11.4, -34.2, 17.8, -25.5, -54, 34, -43};

    for (int i = 0; i < n; ++i)
        cout << Arr[i] << "  ";
    cout << endl;

    double max, min;
    for (int i = 0; i < n; ++i)
    {
        if (Arr[i] < 0)
        {
            int inegmax = i;
            for (int j = i; j < n; ++j)
                if (Arr[j] < 0)
                    if (Arr[j] >= Arr[inegmax])
                        inegmax = j;

            max = Arr[inegmax];
            Arr[inegmax] = Arr[i];
            Arr[i] = max;
        }
        else
        {
            int iposmin = i;
            for (int j = i; j < n; ++j)
                if (Arr[j] >= 0)
                    if (Arr[j] < Arr[iposmin])
                        iposmin = j;

            min = Arr[iposmin];
            Arr[iposmin] = Arr[i];
            Arr[i] = min;
        }
    }

    for (int i = 0; i < n; ++i)
        cout << Arr[i] << "  ";
    cout << endl;
    return 0;
}
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика