fork download
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4.  
  5. using namespace std;
  6.  
  7.  
  8. template<class T>
  9. class Array
  10. {
  11. private:
  12. vector<T> arr;
  13. public:
  14. Array(int size) : arr(size) {}
  15.  
  16. void random()
  17. {
  18. for (int i = 0; i < arr.size(); i++)
  19. {
  20. T randomNumber = -5 + (rand() % ((100 - 1) * 1 + 1)) / T(10);
  21. arr[i] = randomNumber;
  22. }
  23. }
  24.  
  25. void print() { for (int i = 0; i < arr.size(); i++) cout << arr[i] << " "; cout << endl; }
  26.  
  27. T diff()
  28. {
  29. auto first_negative = find_if(arr.begin(), arr.end(), [](const T& var){ return var < 0; });
  30. if (first_negative == arr.end())
  31. return 0;
  32.  
  33. int counter = 0;
  34. auto second_positive = find_if(arr.begin(), arr.end(), [&counter](const T& var){
  35. if (var > 0)
  36. counter++;
  37. if (counter == 2)
  38. return true;
  39. else return false;
  40. });
  41.  
  42. if (second_positive == arr.end())
  43. return 0;
  44.  
  45. return *first_negative - *second_positive;
  46. }
  47. };
  48.  
  49.  
  50. int main()
  51. {
  52. Array<double> ar(10);
  53. ar.random();
  54. ar.print();
  55. cout << ar.diff() << endl;
  56. return 0;
  57. }
Success #stdin #stdout 0s 3432KB
stdin
Standard input is empty
stdout
3.3 3.6 2.7 -3.5 4.3 -1.5 3.6 4.2 -0.1 -2.9 
-7.1