Advertisement
Guest User

Untitled

a guest
May 20th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.44 KB | None | 0 0
  1. // Alexeev N.E.
  2. #include <iostream>
  3. #include <vector>
  4. #include <ctime>
  5. #include <iomanip>
  6. #include <algorithm>
  7. #include <random>
  8.  
  9. #define SIZE 10
  10.  
  11. void reverse(std::vector<int> &vector)
  12. {
  13.     std::cout << "REVERSE\n";
  14.     std::reverse(vector.begin(), vector.end());
  15. }
  16.  
  17. void sortHigh(std::vector<int>& vector)
  18. {
  19.     std::cout << "Sort Ascending\n";
  20.     std::sort(vector.begin(), vector.end());
  21. }
  22.  
  23. void sortLess(std::vector<int>& vector)
  24. {
  25.     std::cout << "Sort Descending\n";
  26.     std::sort(vector.rbegin(), vector.rend());
  27. }
  28.  
  29. using funcType = void (*)(std::vector<int>&);
  30. funcType check(std::vector<int>& vector)
  31. {
  32.     int sum = 0;
  33.     for(auto& now : vector)
  34.         sum += now;
  35.     if (sum == vector[0])
  36.         return reverse;
  37.     if (sum > vector[0])
  38.         return sortHigh;
  39.     if (sum < vector[0])
  40.         return sortLess;
  41.     std::cerr << "Fatal error!";
  42.     exit(0);
  43. }
  44.  
  45. int main()
  46. {
  47.     std::mt19937 gen(static_cast<unsigned int>(time(nullptr)));
  48.     std::uniform_int_distribution<int> dist(-100, 100);
  49.     std::vector<int> vec(SIZE);
  50.     for(auto& now : vec)
  51.         now = dist(gen);
  52.  
  53.     std::cout << "Array:\n";
  54.     for(auto& now : vec)
  55.         std::cout << std::setw(4) << now << ' ';
  56.     std::cout << std::endl;
  57.  
  58.     funcType funcPtr = check(vec);
  59.     funcPtr(vec);
  60.  
  61.     std::cout << "Array after check:\n";
  62.     for(auto& now : vec)
  63.         std::cout << std::setw(4) << now << ' ';
  64.  
  65.     return 0;
  66. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement