1. C++ / Говнокод #9687

    +994

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    int main()
    {   
       //выводит на экран среднее арифметическое чисел 1, 3, 5
       std::cout << Mean + 1 + 3 + 5 << std::endl;
       //выводит на экран среднее геометрическое чисел 2, 4, 8
       std::cout << Mean * 2 * 4 * 8 << std::endl;
    }
    
    //реализация
    
    class CMean
    {
       mutable double out;
       mutable size_t cnt;
       mutable size_t type;
    public:
       CMean(): out(0), cnt(0), type(-1)  {}
       CMean& operator + (double n)
       {
          return type = 0, out+= n, ++cnt, *this;   
       }
       CMean& operator * (double n)
       {   
          return (type == (size_t)-1 ? type = 1, out = 1 : 0), out*= n, ++cnt, *this;   
       }
       size_t reset() const {return type = -1, out = cnt = 0;};
       friend std::ostream& operator << (std::ostream&, const CMean&);   
    } Mean;
    
    std::ostream& operator << (std::ostream& _os, const CMean& _arith)
    {
       return _os << (!_arith.type ? _arith.out / _arith.cnt : std::pow(_arith.out, 1.0 / _arith.cnt)) + _arith.reset();
    }

    Вывод на экран арифметической и геометрической прогрессии.

    Запостил: gooseim, 15 Марта 2012

    Комментарии (11) RSS

    • Ошибочка: выводит не прогрессию, а среднее значение
      Ответить
    • перегрузка операторов - хорошо. но не в данном случае)
      Ответить
      • Когда более или менее релизная версия вашего mingw будет?
        Когда mingw стандартный ваши патчи примет?
        Ответить
        • Про него. Я не особо хорошо знаком с mingw, но кроме того, что в нем нет локали, особых недостатков не заметил. Есть какие-то еще соображения?
          Ответить
        • >Когда более или менее релизная версия вашего mingw будет?
          тут релизы: http://code.google.com/p/mingw-builds/downloads/list архивы с пометкой release.

          >Когда mingw стандартный ваши патчи примет?
          это не к mingw, а к gcc.
          а они приняли. правда немного изменили их, по каким-то своим соображениям. но, в итоге, трэды при динамической линковке так и не работают. свои сборки все еще собираю со своими патчами =)
          Ответить
          • 4.7.0 пока только снапшоты? И объясните что-там за dwarf, sjlj-FINAL, sjlj?
            Ответить
            • >4.7.0 пока только снапшоты?
              релиз, через неделю-другую.

              >что-там за dwarf, sjlj-FINAL, sjlj?
              читать страницу проекта. что не понятно - в гугл.
              Ответить
    • Для юных кулхацкеров вполне нормальное упражнение на перезагрузку операторов и прочее. А стиль и умеренность - это придет со временем.
      Ответить
      • Оператор завис. Давайте его перезагрузим.
        Ответить

    Добавить комментарий