1. C# / Говнокод #8048

    +142

    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
    double[] КосинусФПриВходе = {1,0.99939,0.997564,0.994521,0.990268,0.9848,0.97814,0.97029,0.961261,0.9510565,0.93969,0.927183,0.913545,0.898794,0.88294,
                                         0.866025,0.848048,0.8290375,0.809016,0.78801,0.76604,0.74314,0.71933,0.69465,0.66913,0.64278,0.61566,0.58778,0.55919,0.5,
                                         0.46947,0.43837,0.40673,0.3746,0.34202,0.309016,0.27563,0.24192,0.20791,0.17364,0.13917,0.104528,0.06975,0.034899,0,-0.03489,
                                         -0.06975,-0.104528,-0.13917,-0.17364,-0.20791,-0.24192,-0.27563,-0.309016,-0.34202,-0.3746,-0.40673,-0.43837,-0.46947,-0.5,
                                         -0.55919,-0.58778,-0.61566,-0.64278,-0.66913,-0.69465,-0.71933,-0.74314,-0.76604,-0.78801,-0.809016,-0.8290375,-0.848048,
                                         -0.866025,-0.88294,-0.898794,-0.913545,-0.927183,-0.93969,-0.9510565,-0.961261,-0.97029,-0.97814,-0.9848,-0.990268,-0.994521,
                                         -0.997564,-0.99939,-1,-0.99939,-0.997564,-0.994521,-0.990268,-0.9848,-0.97814,-0.97029,-0.961261,-0.9510565,-0.93969,-0.927183,
                                         -0.913545,-0.898794,-0.88294,-0.866025,-0.848048,-0.8290375,-0.809016,-0.78801,-0.76604,-0.74314,-0.71933,-0.69465,-0.66913,
                                         -0.64278,-0.61566,-0.58778,-0.55919,-0.5,-0.46947,-0.43837,-0.40673,-0.3746,-0.34202,-0.309016,-0.27563,-0.24192,-0.20791,
                                         -0.17364,-0.13917,-0.104528,-0.06975,-0.034899,0,0.03489,0.06975,0.104528,0.13917,0.17364,0.20791,0.24192,0.27563,0.309016,
                                         0.34202,0.3746,0.40673,0.43837,0.46947,0.5,0.55919,0.58778,0.61566,0.64278,0.66913,0.69465,0.71933,0.74314,0.76604,0.78801,
                                         0.809016,0.8290375,0.848048,0.866025,0.88294,0.898794,0.913545,0.927183,0.93969,0.9510565,0.961261,0.97029,0.97814,0.9848,
                                         0.990268,0.994521,0.997564,0.99939};
      
            private void XbYb()
            {
                double x;
                x = AB * КосФ;
                Xb = (int)x;
                double f=4*Ya*Ya-4*(Xa*Xa+Ya*Ya+Xb*Xb-2*Xa*Xb-AB*AB);
                if (счетчик >= 0 && счетчик <= 89) Yb = (2 * Ya + (int)Math.Sqrt(f)) / 2;
                else Yb = (2 * Ya - (int)Math.Sqrt(f)) / 2;
            }
            
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (счетчик == КосинусФПриВходе.Length) счетчик = 0;
                КосФ=КосинусФПриВходе[счетчик];
                XbYb();
                pictureBox1.Invalidate();
                счетчик++;
            }

    1C головного мозга

    psina-from-ua, 30 Сентября 2011

    Комментарии (22)
  2. Python / Говнокод #8047

    −84

    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
    def getListOf(points):
        i=1
        f=open('Welcome_sub.srt', 'a')
        for point in points:
                print "%d" % i
                f.write(str(i)+'\n')
                begin = point.getAttribute('begin').split(':')
                dur = point.getAttribute('dur').split(':')
                h=str( (int(begin[0])+int(dur[0])) if (int(begin[0])+int(dur[0]))>10 else '0'+str(int(begin[0])+int(dur[0])) )
                m=str(int(begin[1])+int(dur[1])) if (int(begin[1])+int(dur[1]))>10 else '0'+str(int(begin[1])+int(dur[1]))
                f.write(point.getAttribute('begin')+' --> '+''.join(h+':'+m+':'+str(float(begin[2])+float(dur[2])) )+'\n')
                print "%s -->%s" % (point.getAttribute('begin'), ''.join(h+':'+m+':'+str(float(begin[2])+float(dur[2])) ))
                f.write(getText(point.childNodes)+'\n')
                print "%s" % getText(point.childNodes)
                i+=1

    nyators, 30 Сентября 2011

    Комментарии (3)
  3. 1C / Говнокод #8046

    −140

    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
    //делает паузу с округлением до целого числа секунд - 1000, 2000 и т.д.
    //Использует ВводСтроки с таймаутом, который работает даже если окно теряет фокус ввода.
    Процедура Sleep(Таймаут)
        Предупреждение("Таймаут " + Строка(Таймаут) + " секунд", Таймаут, "Sleep");
    	ОбработкаПрерыванияПользователя();
    КонецПроцедуры  
    
    Процедура КнопкаВыполнитьНажатие(Кнопка)
    	
    	Если НЕ ВремяНачалаВыполнения = Дата(1,1,1) Тогда
    		Пока Истина = Истина Цикл
    			ОбработкаПрерыванияПользователя();
    			Sleep(45); //Шаг 45 секунд.	
    			Если Час(ТекущаяДата()) = Час(ВремяНачалаВыполнения) И Минута(ТекущаяДата()) >= Минута(ВремяНачалаВыполнения) Тогда
    				Прервать;
    			КонецЕсли;
    		КонецЦикла;
    	КонецЕсли;
            
            //Далее идет обработка перепроведения документов
    
    КонецПроцедуры

    Интересная версия выполнить процедуру по времени

    AndreyEvtyushin, 30 Сентября 2011

    Комментарии (5)
  4. C# / Говнокод #8045

    +131

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    9. 9
    private bool IsChanged(string name, string surname, string patronymic, string email, bool? sex = null, byte[] avatar = null, DateTime? birthDate = null, string address = null)
            {
                bool r1 = sex == null ^ Sex == null ? true : (sex != null ? sex.Value != Sex.Value : true);
                bool r2 = birthDate == null ^ BirthDate == null ? true : (birthDate != null ? birthDate.Value != BirthDate.Value : true);
                bool r3 = address == null ^ Address == null ? true : Address != address;
                bool r4 = avatar == null ^ Avatar == null ? true : (avatar != null ? !Avatar.IsEqual(avatar) : true);
                bool r = Name != name || Surname != surname || Patronymic != patronymic || Email != email;
                return r | r1 | r2 | r3 | r4;
            }

    dotnetdeveloper, 30 Сентября 2011

    Комментарии (16)
  5. Си / Говнокод #8044

    +144

    1. 1
    2. 2
    3. 3
    STATIC_ASSERT(ТНасяльника::ОПЕРАЦИЯ_ЗАПИЛИТЬ != ТНасяльника::ОПЕРАЦИЯ_ВЫПИЛИТЬ);
    bool запилить = ТНасяльника::ОПЕРАЦИЯ_ЗАПИЛИТЬ;
    ТРавшан равшан(запилить ? ЗАПИЛИТЬ : ВЫПИЛИТЬ);

    vayerx, 30 Сентября 2011

    Комментарии (5)
  6. Куча / Говнокод #8043

    +145

    1. 1
    http://open-life.org/blog/algorithm/1627.html

    Красивое наглядное видео алгоритмов сортировки.
    Новичкам может быть полезно, да и просто эстетически приятно.

    CKrestKrestGovno, 30 Сентября 2011

    Комментарии (7)
  7. PHP / Говнокод #8042

    +162

    1. 1
    if(!empty($arResult["Post"])>0)

    Как вы думаете, что это? Правильно, Битрикс!

    maxru, 30 Сентября 2011

    Комментарии (10)
  8. C# / Говнокод #8041

    +134

    1. 1
    2. 2
    if (!(string.IsNullOrEmpty("")))
    ...

    HellMaster_HaiL, 30 Сентября 2011

    Комментарии (13)
  9. C++ / Говнокод #8040

    +155

    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
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    #include <iostream>
    #include <memory>
    #include <assert.h>
    using namespace std;
     
    template <class T>
    class megaClass
    {
    public:
     
        void hello()
        {
            assert(dynamic_cast<T*>(this)!=NULL);
            static_cast<T*>(this)->hello();
        }
        virtual ~megaClass() {}
    };
     
    class cleft : public megaClass<cleft>
    {
    public:
     
        void hello()
        {
            std::cout << "left::hello()" << std::endl;
        }
    };
     
    class cright : public megaClass<cright>
    {
    public:
     
        void hello()
        {
            std::cout << "right::hello()" << std::endl;
        }
    };
     
     
    int main()
    {
        scoped_ptr<megaClass<cleft> > a1=new cleft;
        a1->hello();
        scoped_ptr<megaClass<cright> > a2=new cright;
        a2->hello();
        
        return 0;
    }

    Пытался продемонстрировать статический полиморфизм TarasB и получилась такая какашка. Кто действительно крут и может сабдж продемонстрировать? Я где-то видел пример, но не помню где...

    Ещё продемонстрировал статический полиморфизм через стратегии:

    struct Strategy1
    {
    static void do(){printf("Lol1");}
    };
    struct Strategy2
    {
    static void do(){printf("Lol2");}
    };
    template<class Strategy>
    class MegaClass
    {public:
    void do()
    {
    printf("Mega");
    Strategy::do();//Класс Strategy можно было и создать для хранения состояния.
    printf("/n\");
    }
    };
    //...

    Дальше в разных частях кода создаем:
    MegaClass<Strategy1> o;
    o.do();
    //...
    MegaClass<Strategy2> o;
    o.do();
    "Один" класс ведёт себя по разному. Понятно, что это не совсем полиморфизм. Но очень часто именно в таком контексте используют динамический полиморфизм, хотя такого статического здесь достаточно выше крыши.
    Плюсы этого подхода :
    1)Создаётся объект в стеке, значит быстро, а не в куче. Хотя можно и не в стеке.
    2)Используется шаблон, значит компиль будет инлайнить.

    Минус:
    1)Если понадобится резкой перейти от статического полиморфизма к динамическому - придётся переписывать на виртуальные функции или на истинный статический полиморфизм.

    Обсуждения здесь:
    http://govnokod.ru/8025#comment110773


    Сразу исключим детсадовский вариант статического функционального полиморфизма c перегрузкой функций:
    Class1 o1;
    foo(o1);
    Class2 o2;
    foo(o2);

    void foo(Class1 o){/*...*/};
    void foo(Class2 o){/*...*/};



    Кто-нибудь реально умеет can into нормальный статический полиморфизм?

    CPPGovno, 30 Сентября 2011

    Комментарии (116)
  10. PHP / Говнокод #8039

    +30

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    $files = file_scan_directory(dirname(__FILE__) .'/modes/', '^([^\.].*)\.inc$', array('.', '..', 'CVS'), 0, FALSE);
        foreach ($files as $file) {
          require_once($file->filename);
          $mode = $file->name;
          if (function_exists('advpoll_info_'. $mode)) {
            $advpoll_modes[$mode] = call_user_func('advpoll_info_'. $mode);
          }
        }

    brainstorm, 30 Сентября 2011

    Комментарии (2)