fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <iomanip>
  5. #include <random>
  6. #include <chrono>
  7. #include <iterator>
  8. #include <cmath>
  9.  
  10. using namespace std;
  11.  
  12. int main()
  13. {
  14. default_random_engine gen(chrono::system_clock::now().time_since_epoch().count());
  15. uniform_real_distribution<double> distribution(-99, 99);
  16. const int vector_size = 10;
  17. vector<double> vec(vector_size);
  18. generate_n( begin(vec), vector_size, [&]{ return distribution(gen); } );
  19.  
  20. cout << fixed << setprecision(1);
  21. copy( begin(vec), end(vec), ostream_iterator<double>(cout, ", ") );
  22.  
  23. auto absComp = [](double a, double b){ return abs(a) < abs(b); };
  24. auto max = max_element( begin(vec), end(vec), absComp );
  25. cout << "\n(by absolute) max elements is " << *max << " at pos " << distance( begin(vec), max );
  26.  
  27. auto min = min_element( begin(vec), end(vec), absComp );
  28. cout << "\n(by absolute) min elements is " << *min << " at pos " << distance( begin(vec), min );
  29.  
  30. auto after_first_positive = begin(vec);
  31. while (*after_first_positive++ < 0.0 && after_first_positive != end(vec));
  32. double sum = accumulate( after_first_positive, end(vec), 0.0 );
  33. cout << "\nsum of elements after the first positive element is " << sum;
  34.  
  35. const double a = 10.0;
  36. cout << "\nerasing elements less than " << a << endl;
  37. vec.erase(remove_if( begin(vec), end(vec), bind2nd( less<double>(), a ) ), end(vec));
  38.  
  39. copy( begin(vec), end(vec), ostream_iterator<double>(cout, ", ") );
  40. return 0;
  41. }
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
-41.0, -74.8, -75.3, -86.5, -19.5, -14.8, 62.8, -86.6, -67.0, 36.3, 
(by absolute) max elements is -86.6 at pos 7
(by absolute) min elements is -14.8 at pos 5
sum of elements after the first positive element is -117.2
erasing elements less than 10.0
62.8, 36.3,