Не получается преобразовать массив определенным образом
Нужно преобразовать массив таким образом, чтобы сначала располагались все элементы, модуль которых не превышает 1, а потом — все остальные.
Алгоритм понял,но в коде реализовать не получается,пробовал примерно так:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int n, k = 0;
cout << "n="; cin >> n;
double* a = new double[n];
cout << "Enter "<< n <<" elements:\n";
for (int i = 0; i < n; i++)
cin >> a[i];
cout << endl;
for (int i = 0; i < n; i++)
if (fabs(a[i]) <= 1)
{
for (int j = i; j > k; j--)
swap(a[j], a[j - 1]);
k++;
}
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
delete[]a;
system("pause");
return 0;
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
int main() {
int n = 0;
cout << "n=";
cin >> n;
double* a = new double[n];
cout << "Enter " << n << " elements:\n";
for (int i = 0; i < n; i++)
cin >> a[i];
cout << endl;
partition(a, a + n, [](double b) {
return fabs(b) <= 1;
});
for (int i = 0; i < n; i++)
cout << a[i] << " ";
cout << endl;
delete[]a;
}