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

    +170

    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
    #include <stdio.h>
    #include <math.h>
    #include <conio.h>
    int main()
    { //ввод исходных данных
    short int i, j, k, l;
    printf("i="); scanf("%d",&i);
    printf("j="); scanf("%d",&j);
    printf("k="); scanf("%d",&k);
    printf("l="); scanf("%d",&l);
    if ((k==i+2) && (l==j+1)); else
    if ((k==i+2) && (l==j-1)); else
    if ((k==i-2) && (l==j+1)); else
    if ((k==i-2) && (i==j-1)); else
    if ((k==j+2) && (l==i+1)); else
    if ((k==j+2) && (l==i-1)); else
    if ((k==j-2) && (l==i+1)); else
    if ((k==j-2) && (l==i-1))
    printf("k= %d", k);
    printf("l= %d", l);
    //конь встал на нужную точку
    getch();
    }

    http://otvet.mail.ru/question/64546141/

    vkontakte, 02 Октября 2011

    Комментарии (38)
  2. 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)
  3. C++ / Говнокод #8035

    +169

    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
    if(this->connectionState)
        {
            db_Model->clear();
            db_Model->setTable("lh_chat_archive");
            db_Model->setRelation(6, QSqlRelation("lh_profiles", "id", "last_name"));
            db_Model->setEditStrategy(QSqlRelationalTableModel::OnManualSubmit);
            db_Model->removeColumn(0);
            db_Model->removeColumn(0);
            db_Model->removeColumn(0);
            db_Model->removeColumn(0);
            db_Model->removeColumn(0);
            db_Model->removeColumn(2);
            db_Model->removeColumn(2);
            db_Model->removeColumn(2);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->removeColumn(3);
            db_Model->select();
            db_Model->setHeaderData(0, Qt::Horizontal, trUtf8("Клиент"));
            db_Model->setHeaderData(1, Qt::Horizontal, trUtf8("Менеджер"));
    
            mapper->setModel(db_Model);
            mapper->setItemDelegate(new QSqlRelationalDelegate(this));
        }

    Сотрудник фирмы таким образом избавился от ненужных столбцов в выборке. На вопрос: "А как быть если столбцов много?", ответа не последовало...

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

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

    +150

    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
    Люди, помогите решить такой вопрос. Приведу пример: 
       Есть программист Петя. Он прочитал очень много книг по программированию,
    и вообще умный парень :). И, так как, Петя прочитал много умных книг (Александреску к примеру),
    он соответственно пишет умный код, используя различные фишки с++, например,
    очень любит шаблоны (такие вещи типа статического полиморфизма и еще много
    всего связанного с шаблонами и обобщенным программированием) или использует
    сложные тернарные операторы… ну и т.д. … Соответственно код работает и все хорошо. 
    Как-то в разговоре с Петей ему сказали, что если так прогать, то может получиться
    непрозрачный код. 
      На что он ответил: «Если алгоритм написан верно, и Каму-то непонятен код, то
    проблема в том что человек просто плохо образован в плане программирования.
    Ибо кто-то, например, не знает что такое классы и ему будет не прозрачен код,
    в котором используют классы или обычное наследование. И соответственно не
    писать же все процедурно, из-за того, что кто-то не знает что такое классы.
    А само понятие прозрачности кода - ерунда ».
       От сюда вопрос, Прав ли Петя и что такое вообще «Прозрачность кода»?
    Или действительно код не может быть  написан «Заумно», а тот, кто так
    считает, просто плохо знает стандарт языка.

    Вопрос совершенно серьёзный. //Не холивар.

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

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

    +167

    1. 1
    2. 2
    for(byte i = 3;i<129;++i)
      (state.programImpl[i])(state);

    Мне достался на поддержку этот проект. Это основной цикл программы, хотя их несколько. Есть некоторый массив, заполненный алгоритмом программыфункциями через

    PI programImpl= {
    beginPrg,
    //...
    };
    В зависимости от выполнения различных условий state.programImpl самомодифицируется во время выполнения этого цикла. Мне хочется сказать: "Возьми Lisp и никогда более не берись за С++!". А вообще, в этом проекте эта самомодификация просто не нужна. А теперь вопрос: "Что у человека с головой?"

    Говногость, 29 Сентября 2011

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

    +178

    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
    static long get_ver(unsigned short *src, unsigned char *dst)
    {
    	u8 tmp_buf[16];
    	s32 i = 0;
    
    	while(1)
    	{
    		if(dst[i] < '0' ||  dst[i] > '9')
    			break;
    
    		tmp_buf[i] = dst[i] % 0x30;
    		i++;
    	}
    
    	if(i == 1)
    		*src = tmp_buf[0];
    	else if(i == 2)
    		*src = (tmp_buf[0] * 10) + tmp_buf[1];
    	else if(i == 3)
    		*src = (tmp_buf[0] * 100) + (tmp_buf[1] * 10) + tmp_buf[2];
    	else if(i == 4)
    		*src = (tmp_buf[0] * 1000) + (tmp_buf[1] * 100) + (tmp_buf[2] * 10) + tmp_buf[3];
    
    	return i;
    }

    Функция читает из dst и пишет в src O_O

    mors, 28 Сентября 2011

    Комментарии (17)
  7. C++ / Говнокод #8011

    +163

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    void __fastcall TManageForm::bAnyCentralizerClick(TObject *Sender)
    {
    TBitBtn *Item = dynamic_cast<TBitBtn *>(Sender);
    int bit=0;	// по умолчанию - схват продольной, выход 0 платы 1
    
    if ( Item->Name == bThicknessCentralizer->Name)
    	bit=6;	// если схват толщины - выход 6 платы 1
    
    if (Item->Caption==centr_open)
    	bit++;	// "разжать" - всегда следующий выход после сжать
    a1->SetOutBit(bit);
    }

    Выставление дискретного выхода по дебильному алгоритму. Хотел как лучше, а получилось как всегда)))

    phys-tech, 28 Сентября 2011

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

    +151

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    void f_ai(intrusive_ptr<serial> i);
    //...
    static serial ai;
    serial* ii=&ai;
    //...
    f_ai(ii);

    Компилируется, а потом грохается. С++ такой Си...

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

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    temp = new LIST;
    temp = ptr->next;
    ptr->next = ptr;
    ptr = temp;

    Так меняют указатели местами при сортировке списка.

    brainfucker, 25 Сентября 2011

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

    +160

    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
    #if !defined(_CONSOLE) && !defined(BOOTSTRAP_AGENT)
     g_scheduler.Init(&g_Schedule);
    #endif
    #if (defined(UNDER_CE) || defined(MC_AGENT)) && !defined(BOOTSTRAP_AGENT) /*&& !defined(_CONSOLE) */&& !defined(MC_APM_AGENT)
     m_collector.InitializeFromPDB(/*GetPdbFile()*/);
    #endif
    #if (defined(UNDER_CE) || defined(MC_AGENT)) && !defined(BOOTSTRAP_AGENT) && !defined(_CONSOLE) && !defined(MC_APM_AGENT)
     m_Alert.InitializeFromPDB();
    #endif
    #if !defined( _CONSOLE ) && !defined(BOOTSTRAP_AGENT)
     g_ScheduleEngine.Add( this ); // install scheduler
    #endif
    #if !defined(BOOTSTRAP_AGENT) && !defined(MC_APM_AGENT) && !defined(PRINTER_AGENT)
     g_manager.LoadFromPDB();
    #endif
    
    #if (defined(UNDER_CE) && !defined(BOOTSTRAP_AGENT)) || (defined(MC_AGENT) && !defined(_CONSOLE))
     WriteMCConnectionStatus(MCA_CONN_STATUS_INITIALIZING);
    #endif
     ASSERT(pData != NULL);
     DWORD dwRetries = 0;
    
     bool bFirstDevPkgInstalled = false; // for HHI agent only
     while (pData->nTask != PDT_QUIT)
     {
    #ifdef HHI_AGENT
    ..............

    без комментариев

    Alek86, 22 Сентября 2011

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