
Написать программу на C++ для решения следующей задачи: в данной последовательности расположить
сначала все отрицательные, затем положительные элементы, а нулевые элементы расположить в конце последовательности.

Ответы на вопрос

#include <iostream>
using namespace std;
int main() {
int n;
cin>>n;
int arr[n], k=0;
for (int i=0; i<n; ++i) {cin>>arr[i]; if (arr[i]==0) ++k;}
for (int i=0; i<n-1; ++i) {
for (int j=0; j<n-i-1; ++j) {
if (arr[j]>arr[j+1]) {
int temp;
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
if (k>0) {
int m;
for (m=0; m<n; ++m) if (arr[m]==0) break;
for (int i=m; i<n-k; ++i) arr[i]=arr[i+k];
for (int i=n-k; i<n; ++i) arr[i]=0;
}
for (int i=0; i<n; ++i) cout<<arr[i]<<" ";
return 0;
}



Ниже приведен пример программы на C++, которая решает данную задачу. Она сортирует последовательность таким образом, чтобы сначала шли все отрицательные элементы, затем положительные и, наконец, нулевые элементы.
cpp#include <iostream>
#include <vector>
using namespace std;
void rearrangeSequence(vector<int>& sequence) {
int n = sequence.size();
int left = 0, right = n - 1;
while (left <= right) {
if (sequence[left] < 0) {
left++;
} else if (sequence[left] > 0) {
swap(sequence[left], sequence[right]);
right--;
} else { // элемент равен 0
for (int i = left; i < right; i++) {
sequence[i] = sequence[i + 1];
}
sequence[right] = 0;
right--;
}
}
}
int main() {
// Ввод последовательности
int n;
cout << "Введите размер последовательности: ";
cin >> n;
vector<int> sequence(n);
cout << "Введите элементы последовательности:\n";
for (int i = 0; i < n; i++) {
cin >> sequence[i];
}
// Переупорядочивание последовательности
rearrangeSequence(sequence);
// Вывод результата
cout << "Переупорядоченная последовательность: ";
for (int i = 0; i < n; i++) {
cout << sequence[i] << " ";
}
cout << endl;
return 0;
}
Программа запрашивает у пользователя размер последовательности и её элементы. Затем она использует функцию rearrangeSequence
, чтобы переупорядочить последовательность. Результат выводится на экран.
Например, при вводе последовательности: 4 -2 0 3 -1 0 5
программа выведет: -2 -1 0 0 4 3 5
.


Похожие вопросы
Топ вопросов за вчера в категории Информатика
Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili