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

    +154

    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
    #include <fstream>
    #include <string>
    #include <vector>
    using namespace std;
    
    int main()
    {
        fstream in("z.in", ios::in);
        fstream out("z.out", ios::out);
    
        string s;
        in >> s;
    
        in.close();
    
        vector<size_t> z(s.length());
        z[0] = s.length();
        for (size_t i = 1, l = 0, r = 0, j = 0, k = 0; i < s.length(); (i > r) ? ((s[i + j] == s[j]) && ((j + i) < s.length()) ? ++j : (((z[l = i] = j, r = i + j - 1), j = 0), ++i)) : ((z[i - l] < r - i + 1) ? ((z[i] = z[i - l]), ++i) : (((s[r + k] == s[r - i + k]) && ((k + r) < s.length())) ? ++k : (((z[l = i] = r - i + k, r = r + k - 1), k = 1), ++i))));
    
        for(size_t i = 1; i < s.length(); ++i)
        {
            out << z[i] << " ";
        }
    
        out << flush;
        out.close();
    
        return 0;
    }

    Z-функция в одну строчку. плод больного воображения и лишнего времени

    finomen812, 26 Февраля 2011

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

    +178

    1. 1
    e.voiceMail = !!e.voiceMail;

    поле voiceMail имеет тип bool. Привет из солнечного кетая

    dzagy, 25 Февраля 2011

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    template<typename Class>
    void Raise(int Code)
    {
      throw Class(Code);
    };

    Продолжение эпоса из уже всем знакомого проекта, доставшегося по наследству, в котором активно используются исключния.

    Говногость, 21 Февраля 2011

    Комментарии (44)
  4. 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)
  5. 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)
  6. 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)
  7. 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)
  8. 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)
  9. 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)
  10. 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)