C/C++

Одномерные массивы. Сортировка

В одномерном массиве, состоящем из n вещественных элементов, вычислить:
1) количество отрицательных элементов массива;
2) сумму модулей элементов массива, расположенных после минимального по модулю
элемента.
Заменить все отрицательные элементы массива их квадратами и упорядочить элементы
#include <algorithm>
#include <iostream>
#include <iomanip>
#include <random>
#include <numeric>
using namespace std;
size_t length(const char* msg) {
cout << msg;
size_t value;
cin >> value;
cin.ignore(cin.rdbuf()->in_avail());
return value;
}
void show(double* box, const size_t n) {
cout.setf(ios::fixed);
cout.precision(2);
for (auto i = 0U; i < n; ++i) cout << setw(7) << box[i];
puts("");
}
int main() {
const auto left = -99;
const auto right = 99;
uniform_int_distribution<> uid(left, right);
mt19937 gen{ random_device()() };
auto n = length("N: ");
auto box = new double[n];
for (auto i = 0U; i < n; ++i) box[i] = uid(gen) / 10.0;
show(box, n);
auto neg = count_if(box, box + n, [](double x) { return x < 0; });
cout << "Negative: " << neg << '\n';
auto pos = min_element(box, box + n, [](double a, double b) { return fabs(a) < fabs(b); });
cout << "Min: " << *pos << '\n';
auto sum = accumulate(pos + 1, box + n, 0.0, [](double s, double x) { return s + fabs(x); });
cout << "Sum: " << sum << '\n';
for_each(box, box + n, [](double& x) { if (x < 0) x *= x; });
show(box, n);
sort(box, box + n);
show(box, n);
delete[] box;
system("pause > nul");
}
Юрий Сысоенков
Юрий Сысоенков
52 240
Лучший ответ
Андрей Кузнецов вы просто лучший!