codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
#include <algorithm> #include <numeric> #include <iostream> #include <iterator> #include <locale> #include <boost/lambda/lambda.hpp> namespace lm=boost::lambda; /* в одномерном массиве, состоящем из n вещественных элементов, вычислить: сумму модулей элементов массива, расположенных после первого отрицательного элемента. Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. Освободившихся в конце массива элементы заполнить нулями. */ int main() { setlocale(LC_ALL, ""); const size_t N = 10; double arr[N] = {1.0, -2.0, -3.0, 4.0, 5.0, -6.0, 7.0, -8.0, -9.0, 10.0}; typedef std::ostream_iterator<double> O; typedef std::allocator<double>::pointer iterator; // сумму модулей элементов массива, расположенных после первого отрицательного элемента. iterator neg = std::find_if(arr, arr+N, lm::_1 < 0.0); if (neg != arr+N) { const double sum = std::accumulate(++neg, arr+N, 0.0); std::cout << sum << std::endl; } // Сжать массив, удалив из него все элементы, величина которых находится в интервале [a,b]. // Освободившихся в конце массива элементы заполнить нулями. const double A = -3.0; const double B = 5.0; std::fill( std::remove_if(arr, arr+N, lm::_1 >= A && lm::_1 <= B), arr+N, 0.0); std::copy(arr, arr+N, O(std::cout, " ")); std::cout << std::endl; return 0; }
Private
[
?
]
Run code
Submit