#include <time.h> #include <algorithm> #include <numeric> #include <iostream> // Генерация пcевдо-случайных чисел в заданном диапазоне struct range_rand { range_rand(int lo, int hi) : lo_(lo), hi_(hi) {} unsigned int operator()() const { return rand() % (hi_ - lo_ + 1) + lo_; } int lo_, hi_; }; // Сумма элементов массива, удовлетворяющих условию template<typename _InIt, typename _Ty, typename _Pred1> inline _Ty accumulate_if(_InIt _First, _InIt _Last, _Ty _Val, _Pred1 _Func) { for ( ; _First != _Last; ++_First) if (_Func(*_First)) _Val = _Val + *_First; return (_Val); } int main() { const size_t N = 10; int m[N]; srand(static_cast<unsigned int>(time(NULL))); std::generate_n(m, N, range_rand(-100, 100)); int sum = accumulate_if(m, m + N, 0, std::bind2nd(std::greater<int>(), 0)); std::cout << sum << std::endl; return (0); } |