Программу на с++ даны натуральное число n, действительные числа а1, , аn. преобразовать последовательность al, … , аn, расположив вначале отрицательные члены, а затем—неотрицательные. при этом: а) порядок как отрицательных, так и неотрицательных чисел сохраняется прежним; б) порядок отрицательных чисел изменяется на обратный, а порядок неотрицательных сохраняется прежним; в) порядок отрицательных чисел сохраняется прежним, а порядок неотрицательных изменяется на обратный; г) порядок тех и других чисел изменяется на обратный.
122
350
Ответы на вопрос:
Одно из решений, возможно, не самое эффективное #include < iostream> #include < iomanip> 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; }
Реши свою проблему, спроси otvet5GPT
-
Быстро
Мгновенный ответ на твой вопрос -
Точно
Бот обладает знаниями во всех сферах -
Бесплатно
Задай вопрос и получи ответ бесплатно
Популярно: Информатика
-
Denis200811116.03.2023 03:49
-
Doalipa05.11.2021 22:56
-
Dim10212.10.2022 10:32
-
tiomashash14.12.2021 16:51
-
Lily56627.05.2020 11:15
-
kirifili00727.03.2020 15:33
-
sonyasm200601.01.2021 23:58
-
AльфаDog25.06.2023 09:46
-
Айым20041126.03.2021 18:08
-
їка10.09.2022 17:30
Есть вопросы?
-
Как otvet5GPT работает?
otvet5GPT использует большую языковую модель вместе с базой данных GPT для обеспечения высококачественных образовательных результатов. otvet5GPT действует как доступный академический ресурс вне класса. -
Сколько это стоит?
Проект находиться на стадии тестирования и все услуги бесплатны. -
Могу ли я использовать otvet5GPT в школе?
Конечно! Нейросеть может помочь вам делать конспекты лекций, придумывать идеи в классе и многое другое! -
В чем отличия от ChatGPT?
otvet5GPT черпает академические источники из собственной базы данных и предназначен специально для студентов. otvet5GPT также адаптируется к вашему стилю письма, предоставляя ряд образовательных инструментов, предназначенных для улучшения обучения.