2. Ввести в массив n произвольных чисел (n<=30) Отсортировать отрицательные по убыванию,...

0 голосов
47 просмотров

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


Информатика (12 баллов) | 47 просмотров
Дан 1 ответ
0 голосов

В C++ работает этот код. Других языков практически не знаю.
#include
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] << "  ";<br>    cout << endl;<br>
    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] << "  ";<br>    cout << endl;<br>    return 0;
}

(1.1k баллов)