Задать вопрос
25 мая, 17:41

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

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

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

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

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

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

+1
Ответы (1)
  1. 25 мая, 17:55
    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, расположив ...» по предмету 📘 Информатика, а если вы сомневаетесь в правильности ответов или ответ отсутствует, то попробуйте воспользоваться умным поиском на сайте и найти ответы на похожие вопросы.
Смотреть другие ответы
Похожие вопросы по информатике
Составить программу: 1. Дана последовательность чисел. Найти количество отрицательных элементов. Последовательность целых чисел Найти сумму между максимальными и минимальным элементом последовательность 0-признак конца ведения последовательности. 2.
Ответы (1)
Дан массив a из n целых чисел. Требуется вывести только неотрицательные числа. Формат входных данных На первой строке входного файла записано натуральное число n (n≤100) - число элементов в массиве.
Ответы (1)
Составить программу в паскале, в которой: а) неотрицательные числа заменить sqr, а отрицательные заменить числом 12345. б) Подсчитать и вывести отрицательные элементы массива
Ответы (1)
Помогите написать программу Паскаль, очень прошу, вообще не шарю в программах, а так 2 поставят! Задача "A": Ввести натуральное число и найти сумму его цифр. Пример: Введите натуральное число: 12345. Сумма цифр 15.
Ответы (2)
Даны 3 числа, написать программу подсчитывающую количество отрицательных чисел и сумму неотрицательных чисел
Ответы (1)