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

    +167

    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
    const StringId sidPathName = [=]() -> const char* const
    {
    	switch (path)
    	{
    		case PATH_TOWN_HERO:
    			return "game/careers/town_hero";
    		case PATH_MAD_SCIENTIST:
    			return "game/careers/mad_scientist";
    		case PATH_SPECIAL_AGENT:
    			return "game/careers/special_agent";
    		case PATH_PSYCHIC_PAINTER:
    			return "game/careers/psychic_painter";
    		default:
    			RZT_ASSERT(false);
    			return "";
    	}
    }();

    Не удержался: давно мечтал о возможности ставить const на такие переменные, не отказываясь при этом от свитчей!

    Kirinyale, 21 Февраля 2011

    Комментарии (64)
  2. C++ / Говнокод #5745

    +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
    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
    /**
     * Callback for gravity gradient menu option. Turn Gravity Gradient profile display on/off.
     */
    void Exf2dMW::toggleGravGradientProfileCb()
    {
      // GV show Gravity Gradient profile here.
      if (_toggleGravGradientProfileAct->isChecked())
        gvWidget()->showProfiles(1);
      else
        gvWidget()->hideProfiles(1);
    }
    
    /**
     * Callback for gravity menu option. Turn Gravity profile display on/off.
     */
    void Exf2dMW::toggleGravProfileCb()
    {
      // GV show Gravity profile here.
      if (_toggleGravProfileAct->isChecked())
        gvWidget()->showProfiles(2);
      else
        gvWidget()->hideProfiles(2);
    }
    
    /**
     * Callback for magnetic menu option. Turn Magnetic profile display on/off.
     */
    void Exf2dMW::toggleMagProfileCb()
    {
      // GV show magnetic profile here.
      if (_toggleMagProfileAct->isChecked())
        gvWidget()->showProfiles(3);
      else
        gvWidget()->hideProfiles(3);
    }

    boolean logic fail.

    kitaec, 21 Февраля 2011

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

    +173

    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
    void DrawingLibrary::drawText(int x0, int y0, char string[], int strlen, int red, int green, int blue, int alpha) {
    	for(int i = 0; i < strlen; ++i) {
    		char chr = string[i];
    		int sX = x0 + i * 8;
    		// проходимся по символам, рисуя их
    		if(chr == '!') {
    			bool symbol[8][8] = {{0,0,0,0,0,1,0,0},{0,0,0,0,0,1,0,0},{0,0,0,0,0,1,0,0},{0,0,0,0,0,1,0,0},{0,0,0,0,0,1,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,1,0,0},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    		else if(chr == '"') {
    			bool symbol[8][8] = {{0,0,0,0,1,0,1,0},{0,0,0,0,1,0,1,0},{0,0,0,0,1,0,1,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    		else if(chr == '#') {
    			bool symbol[8][8] = {{0,0,0,0,1,0,1,0},{0,0,0,0,1,0,1,0},{0,0,0,1,1,1,1,1},{0,0,0,0,1,0,1,0},{0,0,0,1,1,1,1,1},{0,0,0,0,1,0,1,0},{0,0,0,0,1,0,1,0},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    		/* еще 135 строк такого "кода" */
    		else if(chr == 'э') {
    			bool symbol[8][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,1,1,1,0},{0,0,0,0,0,0,0,1},{0,0,0,0,0,1,1,1},{0,0,0,0,0,0,0,1},{0,0,0,0,1,1,1,0},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    		else if(chr == 'ю') {
    			bool symbol[8][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,1,0,0,1,0},{0,0,0,1,0,1,0,1},{0,0,0,1,1,1,0,1},{0,0,0,1,0,1,0,1},{0,0,0,1,0,0,1,0},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    		else if(chr == 'я') {
    			bool symbol[8][8] = {{0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0},{0,0,0,0,0,1,1,1},{0,0,0,0,1,0,0,1},{0,0,0,0,0,1,1,1},{0,0,0,0,0,1,0,1},{0,0,0,0,1,0,0,1},{0,0,0,0,0,0,0,0}};
    			this->drawSymbol(sX, y0, symbol, red, green, blue, alpha);
    		}
    	}
    }

    Функция, рисующая на картинке текст.

    ShitCode, 21 Февраля 2011

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

    +162

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    CString sLineNumber = _T("Line");
    	for(int lineIndex = 0; lineIndex < 255; lineIndex++)
    	{
    		sLineNumber += (_itot(lineIndex + 1, temp, 10));
    		...
    		sLineNumber = _T("Line");
    	}

    Build the string variable in loop, instead of use CString::Format(...)

    ShuraKotov, 21 Февраля 2011

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

    +176

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    __forceinline BYTE ClampShortToByte(signed short value)
    {
    	value>255?value=255:( value<0?value=0:NULL );
    
    	return (BYTE)value;
    }

    Kirinyale, 18 Февраля 2011

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

    +162

    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
    #ifdef WIN32
        string nameOfLibToLoad("C:\opt\lib\libctest.dll");
        lib_handle = LoadLibrary(TEXT(nameOfLibToLoad.c_str()));
        if (!lib_handle) {
            cerr << "Cannot load library: " << TEXT(nameOfDllToLoad.c_str()) << endl;
        }
    #else
        string nameOfLibToLoad("/opt/lib/libctest.so");
        lib_handle = dlopen(nameOfLibToLoad.c_str(), RTLD_LAZY);
        if (!lib_handle) {
            cerr << "Cannot load library: " << dlerror() << endl;
        }
    #endif

    кроссплатформенная загрузка шаренной библиотеки... может я чего то не понимаю в этой жизни, но... совершенно здесь лишний класс строки, который делает совершенно лишний вызов конструктора и добавляет совершенно лишние n-килобайт к размеру сборки...
    ссыль: http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

    ReL, 18 Февраля 2011

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

    +171

    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
    #include <iostream>
    
    template <int n>
    struct Solution
    {
      static const int count = Solution<n / 10>::count + 1;
      static const int sum = Solution<n / 10>::sum + n % 10;
      static const int last = n % 10;
      static const int first = Solution<n / 10>::first;
    };
    
    #define DECLARE_ONE_DIGIT_SOLUTION(n) template <>\
                                          struct Solution<n>\
                                          {\
                                            static const int count = 1;\
                                            static const int sum = n;\
                                            static const int last = n;\
                                            static const int first = n;\
                                          };
    
    DECLARE_ONE_DIGIT_SOLUTION(0)
    DECLARE_ONE_DIGIT_SOLUTION(1)
    DECLARE_ONE_DIGIT_SOLUTION(2)
    DECLARE_ONE_DIGIT_SOLUTION(3)
    DECLARE_ONE_DIGIT_SOLUTION(4)
    DECLARE_ONE_DIGIT_SOLUTION(5)
    DECLARE_ONE_DIGIT_SOLUTION(6)
    DECLARE_ONE_DIGIT_SOLUTION(7)
    DECLARE_ONE_DIGIT_SOLUTION(8)
    DECLARE_ONE_DIGIT_SOLUTION(9)
    
    int main()
    {
      const int number = 1024; // <-- то самое число a
    
      std::cout << "Number of digits: " << Solution<number>::count << std::endl;
      std::cout << "Sum: " << Solution<number>::sum << std::endl;
      std::cout << "Last digit: " << Solution<number>::last << std::endl;
      std::cout << "First digit: " << Solution<number>::first << std::endl;
    
      return 0;
    }

    Это один из ответов к слезной просьбе какого-то школьника (студента) выполнить за него д/з на С++ в разделе development форума на ЛОРе. Такую программу нарочно хрен напишешь.

    Само задание: «Дано натуральное число а (a≤100). Напишите программу, определяющую количество цифр в этом числе, сумму его цифр, выводящую на экран первую и последнюю цифру через два пробела».

    deniska, 16 Февраля 2011

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

    +161

    1. 1
    2. 2
    3. 3
    std::auto_ptr<ItemDesc> desc(new ItemDesc());
    ...
    m_items.insert(desc->m_item->m_name, desc.release());

    Да, я тоже говнокодер. А ведь предупреждали...

    Kirinyale, 16 Февраля 2011

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

    +157

    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
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    struct Event
    {
       int priority;
       bool operator<(Event e) const
       {
          return e.priority>priority;
       }
       
       virtual void operator() () = 0;
    };
    
    priority_queue<Event*, deque<Event*> > eventQueue;
    
    template <typename T, void (T::*g)()>
    struct  TEvent : Event
    { 
       T* parent;
       virtual void operator() () 
       {
          (parent->*g)();
       }
       TEvent (T* _parent) : parent(_parent){}
    };
    
    struct Entity
    {
       int foo;
       void AFunc() 
       {
          cout<<foo;
       }
    
       void BFunc() 
       {
          cout<<"Ololo";
       }
               
       typedef TEvent<Entity,&Entity::AFunc> someEvent;
       Entity(int _foo): foo(_foo){}
             
       void addEvent()
       {
          eventQueue.push(new someEvent(this));
       }
    };
    
    int main()
    {
       Entity foo(10);
       foo.addEvent();
       (*eventQueue.top())();
       return 0;
    }

    Один из самых сложных и неочевидных способов вывести в консоль число 10.
    (Этот код - проверка, будет ли работать прототип велосипедного делегата)

    CHayT, 15 Февраля 2011

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

    +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
    if (s<10)
            {
            s++;
            }
            if (s==10)
            {
            ss++; s=0;
            }
            if (ss==6 && s==0)
            {
            m++; ss=0; s=0;
            }
            if (m==10)
            {
            mm++; m=0; ss=0; s=0;
            }
            if (mm==6 && m==0)
            {
            h++; mm=0; m=0; ss=0; s=0;
            }
            if (h==10)
            {
            hh++; h=0; mm=0; m=0; ss=0; s=0;
            }
            if (hh==2 && s==0)
            {

    qbasic, 14 Февраля 2011

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