Задать вопрос
23 мая, 13:20

Программу на с++

Даны натуральное число n, действительные числа а1, ..., аn. Преобразовать последовательность al, ..., аn, расположив вначале отрицательные члены, а затем-неотрицательные. При этом:

а) порядок как отрицательных, так и неотрицательных чисел сохраняется прежним;

б) порядок отрицательных чисел изменяется на обратный, а порядок неотрицательных сохраняется прежним;

в) порядок отрицательных чисел сохраняется прежним, а порядок неотрицательных изменяется на обратный;

г) порядок тех и других чисел изменяется на обратный.

+1
Ответы (1)
  1. 23 мая, 13:35
    0
    Одно из решений, возможно, не самое эффективное

    #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;

    }
Знаете ответ на вопрос?
Не уверены в ответе?
Правильный ответ на вопрос 👍 «Программу на с++ Даны натуральное число n, действительные числа а1, ..., аn. Преобразовать последовательность al, ..., аn, расположив ...» по предмету 📗 Информатика. Развернутая система поиска нашего сайта обязательно приведёт вас к нужной информации. Как вариант - оцените ответы на похожие вопросы. Но если вдруг и это не помогло - задавайте свой вопрос знающим оппонентам, которые быстро дадут на него ответ!
Искать готовые ответы