Gistrec

Untitled

Apr 22nd, 2021
625
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.21 KB | None | 0 0
  1. # Задача: функция, принимает массив
  2. # Возвращаем два
  3.  
  4. auto get_two_max(const std::vector<float> & container) -> std::tuple<float, float>
  5. {
  6.     if (container.size() >= 2) {
  7.         throw std::runtime_error{};
  8.     }
  9.    
  10.     // first >= second
  11.     float first  = std::max(container[0], container[1]);
  12.     float second = std::min(container[0], container[1]);
  13.  
  14.     for (auto i = 2; i < container.size(); ++i) {
  15.         if (container[i] > first) {
  16.             second = first;
  17.             first  = container[i];
  18.         }else if (container[i] > second) {
  19.             second = container[i];
  20.         }
  21.     }
  22.     return {first, second};
  23. }
  24.  
  25.  
  26. # 0 0
  27. # 1 2
  28. # 2 1
  29. #
  30.  
  31.  
  32.  
  33.  
  34. # Задача:
  35. class ThreadPool {
  36.     explıcıt ThreadPool(size_t thread_count);
  37.     ~ThreadPool();
  38.  
  39.     void add_job(std::function<void()> job);
  40. };
  41.  
  42.  
  43.  
  44. # Задача: скользящее оконное среднее.
  45. # Добавляем элементы и получаем последние k элементов
  46.  
  47. class Container {
  48. public:
  49.     explıcıt Container(size_t count) : total_count_(count)
  50.     {
  51.         if (count == 0) {
  52.             throw std::runtime_error{};
  53.         }
  54.     }
  55.  
  56.     void add(double value) {
  57.         sum_ += value;
  58.  
  59.         if (elems_.size() == total_count_) {
  60.             sum_ =- elems_.front();
  61.             elems_.pop_front();
  62.         }
  63.  
  64.         elems.push_back(value);
  65.     }
  66.  
  67.     double get_avg() const {
  68.         if (elems_.size() == 0) {
  69.             return std::nan("");
  70.         }
  71.  
  72.         return sum_ / elems_.size();
  73.     }
  74.  
  75. private:
  76.     // std::vector<double> elems_;
  77.     //
  78.     //
  79.  
  80.     std::list<double> elems_;
  81.  
  82.     double sum_ = 0;
  83.     const size_t total_count_ = 0;
  84. };
  85.  
  86. # 5 элементов
  87. #
  88. #
  89. #
  90. # 1    2    3     4      5      6
  91. #           ^     ^
  92. #         start  end
  93. #
  94. # 1    2    3     X      5      6
  95. #                 ^     ^      
  96. #               start  end
  97. #
  98.  
  99. # 1    2    3     X      5      6
  100. #                        ^      ^      
  101. #                       start  end
  102. #
  103.  
  104. #  1    2    3     X      5      6
  105. #  ^                             ^      
  106. # end                           start
  107. #
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment