1) Пусть будет "сумма отрицательных элементов".
#include
#include
#include
#include
#include
#include
using namespace std;
int main() {
srand(time(0));
int n;
cout << "n? ";
cin >> n;
double *a = new double[n], *e = a + n;
generate_n(a, n, [](){ return (rand() % 101 - 50) / 10.0; });
cout << "массив: \n";
auto oit = ostream_iterator(cout, " ");
copy(a, e, oit);
auto sn = accumulate(a, e, 0.0,
[](double s, double e){ return s + (e < 0? e : 0); });
cout << "\nсумма отрицательных элементов: " << sn;
auto op = [](double e){ return e < 0; };
auto f = find_if(a, e, op) + 1;
if (f != a + n) {
typedef reverse_iterator rit;
auto l = find_if(rit(e), rit(a), op).base() - 1;
auto s = f < l? accumulate(f, l, 0.0) : 0.0;
cout << "\ncумма элементов м/у первым и последним отрицательными: " << s;
}
auto ne = remove_if(a, e, [](double e){ return abs(e) < 1; });
fill(ne, e, 0);
cout << "\nизмененный массив: \n";
copy(a, e, oit);
cout << endl;
}