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

    +151

    1. 1
    2. 2
    3. 3
    char line[10];
    cout<<"Press any key to exit"<<endl;
    cin.getline(line,9);

    Очередной перл из решений кандидатских задач.
    Видимо в военное время количество символов, генерируемых одной клавишей, может достигать 9. :)

    Lexey, 09 Сентября 2010

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

    +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
    typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING344 : boost::mpl::assert_ {
    
      static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) {
        return 0;
      }
    } mpl_assert_arg344;
    
    typedef struct IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING375 : boost::mpl::assert_ {
    
      static boost::mpl::failed ************ (IS_THIS_AN_ARRAY_OR_A_NULL_TERMINATED_STRING::************ assert_arg()) (T&) {
        return 0;
      }
    } mpl_assert_arg375;
    
    template< typename Pred >
    failed ************ (Pred::************
      assert_arg(void (*)(Pred), typename assert_arg_pred<Pred>::type)
      );
    
    template< typename Pred >
    failed ************ (boost::mpl::not_<Pred>::************
      assert_not_arg(void (*)(Pred), typename assert_arg_pred_not<Pred>::type)
      );

    В том что boost'овские библиотеки достаточно хорошо оптимизированы я не сомневаюсь, но от некоторых конструкций я просто охреневаю...

    rudvil, 08 Сентября 2010

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

    +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
    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
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    int main(int argc, char* argv[])
    {
    // Массив русских букв:
            char c[33], s[33];
    // Заглавные буквы:
            c[0] = 0x80; // А
            c[1] = 0x81; // Б
            c[2] = 0x82; // В
            c[3] = 0x83; // Г
            c[4] = 0x84; // Д
            c[5] = 0x85; // Е
            c[6] = 0x86; // Ж
            c[7] = 0x87; // З
            c[8] = 0x88; // И
            c[9] = 0x89; // Й
            c[10] = 0x8A; // К
            c[11] = 0x8B; // Л
            c[12] = 0x8C; // М
            c[13] = 0x8D; // Н
            c[14] = 0x8E; // О
            c[15] = 0x8F; // П
            c[16] = 0x90; // Р
            c[17] = 0x91; // С
            c[18] = 0x92; // Т
            c[19] = 0x93; // У
            c[20] = 0x94; // Ф
            c[21] = 0x95; // Х
            c[22] = 0x96; // Ц
            c[23] = 0x97; // Ч
            c[24] = 0x98; // Ш
            c[25] = 0x99; // Щ
            c[26] = 0x9A; // Ъ
            c[27] = 0x9B; // Ы
            c[28] = 0x9C; // Ь
            c[29] = 0x9D; // Э
            c[30] = 0x9E; // Ю
            c[31] = 0x9F; // Я
            c[32] = 0xF0; // Ё
    // Прописные буквы:
            s[0] = 0xA0; // а
            s[1] = 0xA1; // б
            s[2] = 0xA2; // в
            s[3] = 0xA3; // г
            s[4] = 0xA4; // д
            s[5] = 0xA5; // е
            s[6] = 0xA6; // ж
            s[7] = 0xA7; // з
            s[8] = 0xA8; // и
            s[9] = 0xA9; // й
            s[10] = 0xAA; // к
            s[11] = 0xAB; // л
            s[12] = 0xAC; // м
            s[13] = 0xAD; // н
            s[14] = 0xAE; // о
            s[15] = 0xAF; // п
            s[16] = 0xE0; // р
            s[17] = 0xE1; // с
            s[18] = 0xE2; // т
            s[19] = 0xE3; // у
            s[20] = 0xE4; // ф
            s[21] = 0xE5; // х
            s[22] = 0xE6; // ц
            s[23] = 0xE7; // ч
            s[24] = 0xE8; // ш
            s[25] = 0xE9; // щ
            s[26] = 0xEA; // ъ
            s[27] = 0xEB; // ы
            s[28] = 0xEC; // ь
            s[29] = 0xED; // э
            s[30] = 0xEE; // ю
            s[31] = 0xEF; // я
            s[32] = 0xF1; // ё
    // Конец массива.
    
            cout << c[21] << s[14] << "-" << s[21] << s[14] << "!\n"; // Хо-хо!
    
            getch();
            return 0;
    }

    Когда я ещё не знал, как выводить в консоли русские буквы, спел и натанцевал индийский код.

    novemberdreamer, 08 Сентября 2010

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

    +144

    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
    #include <iostream>
    using namespace std;
    void f(double *x1,double *x2,double *x3)
    {
    	if (((*x1>*x2)&&(*x1<*x3))||((*x1<*x2)&&(*x1>*x3)))
    		*x1=(*x2+*x3)/2;
    	if (((*x2>*x1)&&(*x2<*x3))||((*x2<*x1)&&(*x2>*x3)))
    		*x2=(*x1+*x3)/2;
    	if (((*x3>*x1)&&(*x3<*x2))||((*x3<*x1)&&(*x3>*x2)))
    		*x3=(*x2+*x1)/2;
    }
    int main()
    {
    	double x1,x2,x3;
    	cin>>x1>>x2>>x3;
    	double *y1=&x1;
    	double *y2=&x2;
    	double *y3=&x3;
    	f(y1,y2,y3);
    	cout<<x1<<' '<<x2<<' '<<x3;
    	return 0;
    }

    Креатив.

    Irdis, 06 Сентября 2010

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

    +156

    1. 1
    2. 2
    std::pair<std::vector<char>::const_iterator, unsigned int> parsedUnit = Utils::PackedUIntHelper::Unpack<unsigned char>(it);
    parsedUnit = Utils::PackedUIntHelper::Unpack<unsigned char>(parsedUnit.first);

    Представления потока данных итератором и чтение числа.

    enikey, 03 Сентября 2010

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

    +165

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    if ( p->m_p ) 
    {
          m_p = p->m_p;
    }
    else 
    {
          m_p = NULL;
    }

    Мля, ну а вдруг

    J0hnny, 02 Сентября 2010

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

    +151

    1. 1
    typedef std::basic_string<unsigned short> wstring;

    вот, надыбал в одном из подпроектов большого проекта.

    DarthBobr, 31 Августа 2010

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

    +144

    1. 1
    2. 2
    int i = 1;
    int j = i++ + ++i;

    Инкремент-экскремент, чтобы враг не догадался, 3 или 4 это выражение возвращает.

    bugmenot, 31 Августа 2010

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

    +164

    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
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    class Cmd
    {
    private:  /* ... */
    protected: /* ... */
    public:
    	virtual void Assign(Cmd *Source) {}
    	/* ... */
    };
    //---------------------------------------------------------------------------
    class UARTCmd: public Cmd
    {
    private: /* ... */
    protected:
    	byte FCode;
    	unsigned short FCRCbytes;
    	int FLenData;
    	byte FData[256];
    	unsigned short FInit_CRC;
    	unsigned short FPoly_CRC;
    
    	TypeCommand TypeCmd;
    public:
    	virtual void Assign(Cmd *Source) { /* .1. */ }
    	/* ... */
    };
    //---------------------------------------------------------------------------
    class TRANSITCmd: public Cmd
    {
    private: /* ... */
    protected:
    	byte FCode;
    	unsigned short FCRCbytes;
    	int FLenData;
    	byte FData[256];
    	unsigned short FInit_CRC;
    	unsigned short FPoly_CRC;
    
    	byte FID;
    
    	unsigned short FNumb;
    public:
    	virtual void Assign(Cmd *Source) { /* .2. */ /* .3. */ }
    	/* ... */
    };
    //---------------------------------------------------------------------------
    class ASKCmd: public Cmd
    {
    private: /* ... */
    protected:
    	byte FCode;
    	unsigned short FCRCbytes;
    	int FLenData;
    	byte FData[256];
    	unsigned short FInit_CRC;
    	unsigned short FPoly_CRC;
    
    	byte FID;
    
    	byte FidFrom;
    	byte FTimeR;
    	unsigned short FSID;
    public:
    	virtual void Assign(Cmd *Source) { /* .2. */ /* .4. */ }
    	/* ... */
    };
    //---------------------------------------------------------------------------
    class RESPCmd: public Cmd
    {
    private: /* ... */
    protected:
    	byte FCode;
    	unsigned short FCRCbytes;
    	int FLenData;
    	byte FData[256];
    	unsigned short FInit_CRC;
    	unsigned short FPoly_CRC;
    
    	byte FID;
    
    	byte FidFrom;
    	byte FTimeR;
    	unsigned short FSID;
    
    	byte FidResp;
    	unsigned short FCRCResp;
    public:
    	virtual void Assign(Cmd *Source) { /* .2. */ /* .4. */ /* .5. */ }
    	/* ... */
    };

    Сие чудо я должен реализовывать! Так сказать, привести в порядок код.

    P.S. Первоначальный вариант выглядит в разы лучше.
    P.P.S. /* .1. */ - обозначает часть кода

    sanchousf, 30 Августа 2010

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

    +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
    TCHAR szPort[7];
    
    	strcpy(m_szAddress,szAddress);
        
        // INITIALIZE RETURN VALUE TO INDICATE COM PORT NOT INITIALIZED 	
    	bool bRetVal = false;
    	
    	switch( byCOMPort )
    	{
    	case 1:
    		_tcscpy(szPort,_T("COM1:"));
    		break;
    	case 2:
    		_tcscpy(szPort,_T("COM2:"));
    		break;
    	case 3:
    		_tcscpy(szPort,_T("COM3:"));
    		break;
    	case 4:
    		_tcscpy(szPort,_T("COM4:"));
    		break;
    	}

    Вот так гибко можно отрывать любой из четырёх COM портов.

    slavap, 30 Августа 2010

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