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

    +87

    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
    90. 90
    91. 91
    92. 92
    93. 93
    94. 94
    95. 95
    96. 96
    97. 97
    98. 98
    float Chislo(char *a, int i)
      {
       int j=i;
       int k=0;
       int r;
       float chis=0;
       while (a[j-1]!=' ' && a[j-1]!='>' && a[j-1]!='-' && a[j-1]!='+' && a[j-1]!='(')
         {j--;
                 //тут перегоняем символ a[j] в цифру r
          if (int(a[j]==48)) r=0;
           else if (int(a[j]==49)) r=1;
            else if (int(a[j]==50)) r=2;
             else if (int(a[j]==51)) r=3;
              else if (int(a[j]==52)) r=4;
               else if (int(a[j]==53)) r=5;
                else if (int(a[j]==54)) r=6;
                 else if (int(a[j]==55)) r=7;
                  else if (int(a[j]==56)) r=8;
                   else if (int(a[j]==57)) r=9;
                     else goto lab8;
          //ShowMessage(a[j]);
    
          chis=chis + r*pow(10,k);
          k++;
         };
       //j--;            //дальше надо обратно до точки и дольше до пробела
       while (a[j]!='.')
         {if (a[j]==' ' || a[j]==':') goto lab8;
          j++;
         };
       j++;
       r=0;
       k=-1;
       
          k--;
          j++;
         };
    
       lab8:
    
       return chis;
      }
    
    // была еще и похощая функция возвращающая результат в виде AnsiString
    
    // вот сколько переменных понадобивлось автору в более чем 700-строчной процедуре
    
    void Progon()
    {
     //
      AnsiString TempR1, TempR2, TempR3, Com,Sport,Team1,Team2, Team, URL1, URL2, page,Champ,Date;
      AnsiString day, month, year, Res, temp, otdyh1, otdyh2;
      int dat;
      //TempR1 = NMHTTP1->Body;
    
       float tot,TM,TB,bol1,bol2,srbol,ver,value,proc;
       AnsiString totS,f1S,ind1S,ind2S, f1ch1S, t_ch1S, f1ch2S, t_ch2S, f1ch3S, t_ch3S, f1ch4S, t_ch4S;
       float fora1,ind1,ind2, f1ch1, t_ch1, f1ch2, t_ch2, f1ch3, t_ch3, f1ch4, t_ch4;
       AnsiString Score1, Score2, s1ch1S, s2ch1S, s1ch2S, s2ch2S, s1ch3S, s2ch3S, s1ch4S, s2ch4S;
    
       AnsiString FIO, ScoreS, RebS, AstS, MinS, Amplua, BlkS, StlS;
       AnsiString TotalS, RebBookS, AstBookS, StlBookS, BlkBookS;
       float Total, RebBook, AstBook, BlkBook, StlBook;
       float PtssNRebsBook, PtssNAstsBook, RebsNAstsBook, PtssNRebsNAstsBook, Book3ptTeam1, Book3ptTeam2;
       int Score, count;
    
       int str1, str2, ind, indd, ig_pos;
       bool win;
    
    // В коде куча такого
    
     while (bukva2[i2]!='/') i2++;
                          i2++;
                          while (bukva2[i2]!='/') i2++;
                          i2++;
                          while (bukva2[i2]!='/') i2++;       // // обошли stl
    
    int *Ptss;
      Ptss = new int[count];
    
      int *Rebs;
      Rebs = new int[count];
    
      int *Asts;
      Asts = new int[count];
    
      int *Blks;
    
    
    while ( ! ( ((bukva[i]=='H') &&(bukva[i+1]=='o') && (bukva[i+2]=='m') && (bukva[i+3]=='e')) || ((bukva[i]=='R') &&(bukva[i+1]=='o') && (bukva[i+2]=='a') && (bukva[i+3]=='d')))) i--;
             while (bukva[i]!='a') i--;
             while ((bukva[i-1]!='>') && (bukva[i-1]!=' ')) i--;
    
    // Внутри циклов всюду работа с экселем
     else
                                 {Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+14).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
                                  Form1->App.OlePropertyGet("ActiveSheet").OlePropertyGet("Cells", str1, str2+15).OlePropertyGet("Font").OlePropertySet("Color", -16777216);
                                 };

    Как -то по фрилансу заказчик хотел доработать то ли парсер, то ли еще что-то (по предоставленным исходникам я так и не смог понять что это за прога, названная "Автониггер" и написанная каким -то студентом толи специально ради выноса мозгов, то ли по еще каким-то причинам вышеобозначенными выкладками, которые вполне возможно содержат в себе какойто гипнотический смысл).

    fenryr, 29 Апреля 2010

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

    +924

    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 char message_buf[64000];  // must be actually 64K == 64<<10 == 65536
    
    class MessageHandler {
       // [...]
       char *header;         // point into the message_buf
       char *content;
       std::list<char *> tlvs; // pointers to the elements of the message
    };
    
    // я пожаловался - пообещали исправить в новой версии по ходу реализации новой фичи.
    
    // новый "усовершенствованый" код, с "поддержкой" многопоточности.
    
    static char message_buf[100][65000];  // 100 == max threads, buffer size now is much closer to the standard
    
    class MessageHandler {
       // [...]
       int threadId;             // index into the new message_buf[]
       char *header;          // point into the message_buf[threadId]
       char *content;
       std::vector<char *> tlvs; // same, but in std::vector because it is "faster"
    };

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

    Dummy00001, 26 Апреля 2010

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

    +911

    1. 1
    case UP : o > 0 ? o-- : o = FIELD_SIZE - 1; break;

    Друг скинул в аську, попросил перевести в if-ную форму)))
    Не знаю где он это откопал)))

    k06a, 26 Апреля 2010

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

    +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
    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
    #include <iostream>
    #include <stdio.h>
    using namespace std;
    #define chislo int
    #define osnovnoe main
    #define nachalo {
    #define konec }
    #define chitaj scanf
    #define pishi printf
    #define CS ;
    #define verni return
    #define noleg 0
    #define strochechka string
    #define naruzhu <<
    #define vnutr >>
    #define vozmi cin
    #define daj cout
    #define esli if
    #define PISCS endl
    #define eshe &&
    #define cicle for
    #define poka while
    #define simvol char
    #define vozmis getchar()
    #define shlak EOF
    #define SPS '\n'
    #define vozmozhno ||
    #define eshe &&
    #define inache else
    chislo aasda[1000] CS
    chislo chistka()
    nachalo
    	chislo i CS
    	cicle(i=noleg CS i<1000 CS i++)
    		aasda[i]=noleg CS
    	verni aasda[noleg] CS
    konec
    chislo mnozh(chislo k)
    nachalo
    	chislo i CS
    	cicle(i=noleg+2 CS i<k CS i++)
    			esli(k%i==0) nachalo aasda[i]++ CS verni mnozh(k/i)+1 CS konec
    	aasda[k]++ CS
    	verni 1 CS
    konec
    chislo krutilka(chislo k)
    nachalo
    	esli(k==1) verni 1 CS
    	verni k*krutilka(k-1) CS
    konec
    chislo osnovnoe()
    nachalo
    	chislo colm, ppm=1, k, i CS
    	vozmi vnutr k CS
    	chistka() CS
    	colm=mnozh(k) CS
    	cicle(i=noleg CS i<=1000 CS i++)
    		esli(aasda[i]>0) ppm*=krutilka(aasda[i]) CS
    	daj naruzhu krutilka(colm)/ppm naruzhu PISCS CS				
    	verni noleg CS
    konec

    Так мы писали задачи на Турнире Архимеда=)

    Novi4oK, 26 Апреля 2010

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

    +908

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    for (int i = ((x-1)>=0)?(x-1):0; i<=((x+1<=9)?(x+1):9); ++i)
    	for (int j = ((y-1)>=0)?(y-1):0; j<=((y+d<=9)?(y+d):9); ++j)
    		if (isplayer)
    		{
    			if (Board[i][j]->Alive)
    				return false;
    		}
    		else
    		{
    			if (EnBoard[i][j]->Alive)
    				return false;
    		}

    с++ такой с++

    xXx_totalwar, 23 Апреля 2010

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

    +908

    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
    template <typename Handler>
      void start_connect_op(socket_type descriptor,
          per_descriptor_data&, Handler handler)
      {
        boost::asio::detail::mutex::scoped_lock lock(mutex_);
        if (!shutdown_)
        {
          boost::shared_ptr<bool> completed(new bool(false));
          connect_handler_wrapper<Handler> wrapped_handler(
              descriptor, completed, *this, handler);
          bool interrupt = write_op_queue_.enqueue_operation(
              descriptor, wrapped_handler);
          interrupt = except_op_queue_.enqueue_operation(
              descriptor, wrapped_handler) || interrupt;
          if (interrupt)
            interrupter_.interrupt();
        }
      }

    Как дико зафрагментировать кучу?!
    Столько хороших идей и так много говнокода в реализации.
    //boost::shared_ptr<bool> completed(new bool(false)); - это один из шедевров кривокодирования!!!

    mock, 22 Апреля 2010

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

    +64

    1. 1
    2. 2
    3. 3
    4. 4
    if (mpQCWWANDLL == 0)
    {
        ASSERT( 0 );
    }

    mors, 21 Апреля 2010

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

    +59

    1. 1
    2. 2
    double _[1];
    void main(){[](){[](){[](){[](){0[_];}();}();}();}();};

    Осторожно! Новый стандарт превращает [этот язык, который нельзя называть по имени] в Perl при не верном использовании.

    C++0x, 21 Апреля 2010

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

    +911

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    TVector4 V0;
    TVector4 V1;
    TVector4 V2;
    
    //....
    //Пример компилирующегося допустимого использования:
    (V0+V1)=V2;

    Нашёл я тут мега библиотеку в инете для работы с векторами. За такое нужно бить по рукам.

    Говногость, 20 Апреля 2010

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

    +61

    1. 1
    2. 2
    3. 3
    FILE *h=fopen(fileDMB, "r");
    char *fileDMBtext;
    while(fileDMBtext=fgetc(h)!=EOF){return 0;}

    Я даже знаю компилятор в котором это работает.

    hromjo, 20 Апреля 2010

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