Программу на с++ Даны натуральное число n, действительные числа а1, ... , аn. Преобразовать последовательность al, … , аn, расположив вначале отрицательные члены, а затем—неотрицательные. При этом: а) порядок как отрицательных,...

Программу на с++ Даны натуральное число n, действительные числа а1, ... , аn. Преобразовать последовательность al, … , аn, расположив вначале отрицательные члены, а затем—неотрицательные. При этом: а) порядок как отрицательных, так и неотрицательных чисел сохраняется прежним; б) порядок отрицательных чисел изменяется на обратный, а порядок неотрицательных сохраняется прежним; в) порядок отрицательных чисел сохраняется прежним, а порядок неотрицательных изменяется на обратный; г) порядок тех и других чисел изменяется на обратный.
Гость
Ответ(ы) на вопрос:
Гость
одно из решений, возможно, не самое эффективное #include #include int main() {     using namespace std;     //исходная последовательность     const int N = 8;     double Arr[N] = { 14.2, -3.4, 7.8, -3.1, 8.2, 98.22, -7, 12 };     //вывод на экран исходной последовательности     for (int i = 0; i < N; ++i)         cout << Arr[i] << "  ";     cout << endl;     //подсчитаем количества отрицательных и неотрицательных элементов     int kpos = 0;     int kneg = 0;     for (int i = 0; i < N; ++i)         if (Arr[i] < 0)             ++kneg;         else             ++kpos;     //создадим массивы отрицательных и неотрицательных элементов     double * ArrNeg = new double[kneg];     double * ArrPos = new double[kpos];     int kn = 0, kp = 0;     for (int i = 0; i < N; i++)         if (Arr[i] < 0)             ArrNeg[kn++] = Arr[i];         else             ArrPos[kp++] = Arr[i];     cout << "Enter a, b, c or d: ";     char ch;     cin >> ch;     if (ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd')     {         switch (ch)         {             //пункт а)             case 'a':                 for (int i = 0; i < kneg; ++i)                     Arr[i] = ArrNeg[i];                 for (int i = 0; i < kpos; ++i)                     Arr[i + kneg] = ArrPos[i];                 break;                 //пункт б)             case 'b':                 for (int i = 0; i < kneg; ++i)                     Arr[i] = ArrNeg[--kn];                 for (int i = 0; i < kpos; ++i)                     Arr[i + kneg] = ArrPos[i];                 break;                 //пункт в)             case 'c':                 for (int i = 0; i < kneg; ++i)                     Arr[i] = ArrNeg[i];                 for (int i = 0; i < kpos; ++i)                     Arr[i + kneg] = ArrPos[--kp];                 break;                 //пункт г)             case 'd':                 for (int i = 0; i < kneg; ++i)                     Arr[i] = ArrNeg[--kn];                 for (int i = 0; i < kpos; ++i)                     Arr[i + kneg] = ArrPos[--kp];                 break;         }     }     else         cout << "You entered wrong symbol\n";     for (int i = 0; i < N; ++i)         cout << Arr[i] << "  ";     cout << endl;     delete[] ArrNeg;     delete[] ArrPos;     return 0; }
Не нашли ответ?
Ответить на вопрос
Похожие вопросы