Advertisement
Guest User

Untitled

a guest
Sep 19th, 2017
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. #include <cstdio>
  2.  
  3. #include <vector>
  4.  
  5. template <typename T>
  6. class fset : public std::vector<T>
  7. {
  8. public:
  9.     fset<T> operator == (T val) const
  10.     {
  11.         fset<T> nset;
  12.         for (int i = 0; i < std::vector<T>::size(); ++i)
  13.             if ((*this)[i] == val)
  14.                 nset.push_back((*this)[i]);
  15.         return nset;
  16.     }
  17.     fset<T> operator != (T val) const
  18.     {
  19.         fset<T> nset;
  20.         for (int i = 0; i < std::vector<T>::size(); ++i)
  21.             if ((*this)[i] != val)
  22.                 nset.push_back((*this)[i]);
  23.         return nset;
  24.     }
  25.     fset<T> operator > (T val) const
  26.     {
  27.         fset<T> nset;
  28.         for (int i = 0; i < std::vector<T>::size(); ++i)
  29.             if ((*this)[i] > val)
  30.                 nset.push_back((*this)[i]);
  31.         return nset;
  32.     }
  33.     fset<T> operator >= (T val) const
  34.     {
  35.         fset<T> nset;
  36.         for (int i = 0; i < std::vector<T>::size(); ++i)
  37.             if ((*this)[i] >= val)
  38.                 nset.push_back((*this)[i]);
  39.         return nset;
  40.     }
  41.     fset<T> operator < (T val) const
  42.     {
  43.         fset<T> nset;
  44.         for (int i = 0; i < std::vector<T>::size(); ++i)
  45.             if ((*this)[i] < val)
  46.                 nset.push_back((*this)[i]);
  47.         return nset;
  48.     }
  49.     fset<T> operator <= (T val) const
  50.     {
  51.         fset<T> nset;
  52.         for (int i = 0; i < std::vector<T>::size(); ++i)
  53.             if ((*this)[i] <= val)
  54.                 nset.push_back((*this)[i]);
  55.         return nset;
  56.     }
  57.  
  58.     fset<T> & operator += (T val)
  59.     {
  60.         std::vector<T>::push_back(val);
  61.         return *this;
  62.     }
  63.  
  64.     T sum () const
  65.     {
  66.         double ssum = 0.0;
  67.         for (int i = 0; i < std::vector<T>::size(); ++i)
  68.             ssum += (*this)[i];
  69.         return ssum;
  70.     }
  71.  
  72.     T average () const
  73.     {
  74.         return sum() / std::vector<T>::size();
  75.     }
  76. };
  77.  
  78. int main ()
  79. {
  80.     fset<double> arr;
  81.     arr += 4;
  82.     arr += 5;
  83.     arr += -4;
  84.     arr += -5;
  85.  
  86.     printf("Average = %f\n",    arr.average());
  87.     printf("Average pos = %f\n",    (arr > 0.0).average());
  88.     printf("Average neg = %f\n",    (arr < 0.0).average());
  89.  
  90.     return 0;
  91. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement