1. Лучший говнокод

    В номинации:
    За время:
  2. C++ / Говнокод #13152

    +12

    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
    template <class ToPtr,class From>
    ToPtr DynamicCast (From f)
    {
      // static check if *ToPtr is derived from f
      (void)sizeof (static_cast<From> ((ToPtr)NULL));
      // lazy precalculation
      static bool castable = dynamic_cast<ToPtr> (f)!=NULL;
      static int offset =
        int ((char *)dynamic_cast<ToPtr> (f)-(char *)f);
      return castable? (ToPtr)((char *)f+offset) : NULL;
    }
    
    // usage: TBase *ptr1 = ...; TDerived *ptr2 = DynamicCast<TDerived *> (ptr1);

    Performance oriented dynamic_cast

    Artur, 11 Июня 2013

    Комментарии (13)
  3. PHP / Говнокод #13100

    +151

    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
    function getNextDay($_arr_date, $day)
    {
        $_arr_result = array();
        $str_result = '';
    
        $str_result = substr($_arr_date[0], 0, 2);
        $str_result .= '-';
        $str_result .= substr($_arr_date[0], 2, 2);
        $str_result .= '-';
        $str_result .= substr($_arr_date[0], 4, 4);
    
        $arrDate = explode('-', $str_result);
    
        $_arr_result[0] = date('d-m-Y', mktime(0, 0, 0, $arrDate[1], $arrDate[0] + $day, $arrDate[2]));
        $_arr_result[1] = date('d-m-Y', mktime(0, 0, 0, $arrDate[1], ($arrDate[0] + $day + 1), $arrDate[2]));
        $_arr_result[2] = date('Y-m-d', mktime(0, 0, 0, $arrDate[1], $arrDate[0] + $day, $arrDate[2])); //for BD
        $_arr_result[3] = date('Y-m-d', mktime(0, 0, 0, $arrDate[1], ($arrDate[0] + $day + 1), $arrDate[2])); //for BD
    
        return $_arr_result;
    }

    Получаем дату следующего дня

    stsaranchin, 04 Июня 2013

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

    +35

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    #if defined(_WIN32) || defined(_WIN64)
        ofstream outfile("help.txt");
        outfile << message << endl;
        system("notepad.exe help.txt");
     #else
        cout << message ;
    #endif

    Зачем бороться с юникодом в консоли, когда есть блокнот?

    crastinus, 03 Июня 2013

    Комментарии (13)
  5. Java / Говнокод #13085

    +76

    1. 1
    https://github.com/mongodb/mongo-java-driver/blob/master/src/main/com/mongodb/ConnectionStatus.java#L213

    wtf?!

    orion, 31 Мая 2013

    Комментарии (13)
  6. SQL / Говнокод #13040

    −158

    1. 1
    2. 2
    3. 3
    4. 4
    update "Employee"."Jobs" set "default_group_id" = '1' where "id" in (select "id" from "Employee"."Jobs" where title like '%родавец%');
    update "Employee"."Jobs" set "default_group_id" = '2' where "id" in (select "id" from "Employee"."Jobs" where title like '%правляющ%');
    update "Employee"."Jobs" set "default_group_id" = '3' where "id" in (select "id" from "Employee"."Jobs" where title like '%лиент%');
    update "Employee"."Jobs" set "default_group_id" = '4' where "id" in (select "id" from "Employee"."Jobs" where title like '%клад%' and title not like '%борщиц%');

    like '%клад% должен был включать всяких "работников склада" и "замзавсклада", но туда попала также и "уборщица склада" - пришлось заводить второе условие

    AntonioK, 23 Мая 2013

    Комментарии (13)
  7. Pascal / Говнокод #13023

    +84

    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
    uses crt;
    type point=record{точки}
               x,y:real;
               end;
         okr=record{окружности}
             x,y,r:real;
             end;
    const nmax=20;
    function Peres(a,b:point;c:okr):boolean;{пересекаются или нет}
    var s,ab,h:real;
    begin
    s:=abs(a.x*(b.y-c.y)+b.x*(c.y-a.y)+c.x*(a.y-b.y));{удвоенная площадь треугольника
    вершины которого центр окружности и 2 точки}
    ab:=sqrt(sqr(a.x-b.x)+sqr(a.y-b.y));{сторона, противоположная центру окружности}
    h:=s/ab;{высота на нее=расстояние от центра до прямой}
    Peres:=h<c.r;{если лно меньше радиуса, пересекаются}
    end;
    var a:array[1..nmax] of point;
        b:array[1..nmax] of okr;
        n,m,i,j,k,p,mx,imx,jmx:integer;
    begin
    clrscr;
    randomize;
    repeat
    write('Количество точек до ',nmax,' n=');
    readln(n);
    until n in [1..nmax];
    repeat
    write('Количество окружностей до ',nmax,' m=');
    readln(m);
    until m in [1..nmax];
    for i:=1 to n do
     begin
      a[i].x:=-10+random*21;
      a[i].y:=-10+random*21;
     end;
    for i:=1 to m do
     begin
      b[i].x:=-5+11*random;
      b[i].y:=-5+11*random;
      b[i].r:=5*random;
     end;
    writeln('Координаты точек:');
    write('X:');
    for i:=1 to n do
    write(a[i].x:6:2);
    writeln;
    write('Y:');
    for i:=1 to n do
    write(a[i].y:6:2);
    writeln;
    writeln;
    writeln('Параметры окружностей:');
    write('X:');
    for i:=1 to m do
    write(b[i].x:6:2);
    writeln;
    write('Y:');
    for i:=1 to m do
    write(b[i].y:6:2);
    writeln;
    write('R:');
    for i:=1 to m do
    write(b[i].r:6:2);
    writeln;
    writeln;
    mx:=0;
    imx:=0;
    jmx:=0;
    for i:=1 to n-1 do
    for j:=i+1 to n do
     begin
      k:=0;
      for p:=1 to m do
      if Peres(a[i],a[j],b[p]) then k:=k+1;
      if k>mx then
       begin
        mx:=k;
        imx:=i;
        jmx:=j;
       end;
     end;
    if mx=0 then write('Нет пересекающихся прямых и окружностей')
    else
     begin
      writeln('Максимальное число пересечений прямой с окружностями=',mx);
      write('Эта прямая проходит через точки (',a[imx].x:0:2,';',a[imx].y:0:2,') и (',a[jmx].x:0:2,';',a[jmx].y:0:2,')');
     end;
    readln
    end.

    Рекурсивная функций с циклами тройной вложенности

    Psilon, 20 Мая 2013

    Комментарии (13)
  8. PHP / Говнокод #13021

    +153

    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
    function u8($win,$h,$t)  
    {  
    global $w8;  
    $w8[chr($h).chr($t)] = $win;  
    }  
    $c1 = chr(208);  
    $c2 = chr(209);  
    u8("й",208,185); u8("ц",209,134); u8("у",209,131);  
    u8("к",208,186); u8("е",208,181); u8("н",208,189);  
    u8("г",208,179); u8("ш",209,136); u8("щ",209,137);  
    u8("з",208,183); u8("х",209,133); u8("ъ",209,138);  
    u8("ф",209,132); u8("ы",209,139); u8("в",208,178);  
    u8("а",208,176); u8("п",208,191); u8("р",209,128);  
    u8("о",208,190); u8("л",208,187); u8("д",208,180);  
    u8("ж",208,182); u8("э",209,141); u8("я",209,143);  
    u8("ч",209,135); u8("с",209,129); u8("м",208,188);  
    u8("и",208,184); u8("т",209,130); u8("ь",209,140);  
    u8("б",208,177); u8("ю",209,142); u8("Й",208,153);  
    u8("Ц",208,166); u8("У",208,163); u8("К",208,154);  
    u8("Е",208,149); u8("Н",208,157); u8("Г",208,147);  
    u8("Ш",208,168); u8("Щ",208,169); u8("З",208,151);  
    u8("Х",208,165); u8("Ъ",208,170); u8("Ф",208,164);  
    u8("Ы",208,171); u8("В",208,146); u8("А",208,144);  
    u8("П",208,159); u8("Р",208,160); u8("О",208,158);  
    u8("Л",208,155); u8("Д",208,148); u8("Ж",208,150);  
    u8("Э",208,173); u8("Я",208,175); u8("Ч",208,167);  
    u8("С",208,161); u8("М",208,156); u8("И",208,152);  
    u8("Т",208,162); u8("Ь",208,172); u8("Б",208,145);  
    u8("Ю",208,174); u8("ё",209,145); u8("Ё",208,129);  
       
    function utf2win ($text)  
    {  
    global $c1,$c2,$w8;  
    $u = false;  
    $temp = "";  
    for($i=0,$len=strlen($text); $i<$len; $i++) {  
      $c = substr($text,$i,1);  
      if ($u) {  
      $c = $w8[$lc.$c];  
      $temp .= isset($c)?$c:"?";  
      $u = false;  
      }  
      else if ($c==$c1 || $c==$c2) {  
      $u = true;  
      $lc = $c;  
      }  
      else  
      $temp .= $c;  
    }  
    return $temp;  
    }

    Это код переводит строку из кодировки UTF-8 в Windows-1251. Его автор явно не о iconv.

    vbysnek, 19 Мая 2013

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

    −171

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    ЕстьПроблема       = (Мин(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема)<>Макс(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема));
    ТолькоПроблемы = Мин(СсылкаНаЗапрос.ЭтоПроблема,СвязанныйЗапрос.ЭтоПроблема);
    
    Если ЕстьПроблема И Не ТолькоПроблемы Тогда 
         // кусок кода
    Иначе 
         // кусок кода
    КонецЕсли;

    Наваял тут... Самому прикольно стало.

    jerokee, 16 Мая 2013

    Комментарии (13)
  10. ActionScript / Говнокод #12958

    −93

    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
    private function showTick():void {
        d=getTimer() - startT;
        if (d<ACT_TIME) {
            if(d<=200){
                //scale up
                sprite.scaleX = 0.3+(d/200)*0.7;
                sprite.scaleY = 0.3+(d/200)*0.7;
            }else if(d>200 && d<500){
                sprite.scaleX = 1;
                sprite.scaleY = 1;
            }
            if(d<=300){
                sprite.alpha = d/300;
                //alpha up
            }else if(d>300 && d<500){
                sprite.alpha = 1;
            }
            if(d>=500 && d<=800){
                //scale down
                sprite.scaleX = 1-((d-500)/300);
                sprite.scaleY = 1-((d-500)/300);
                sprite.alpha = 1-((d-500)/300);
            }else if(d>800){
                sprite.scaleX = 0;
                sprite.scaleY = 0;
                sprite.alpha = 0;
            }
    
        }else {
            EnterFrame.removeAction(this._action);
            this._action = null;
        }
    }

    Хотела поменять скорость анимации текста... Уже не хочу.

    kyzi007, 01 Мая 2013

    Комментарии (13)
  11. Куча / Говнокод #12949

    +142

    1. 1
    <b><b><b><b><b><b><strong>В стоимость входит:</strong></b></b></b></b></b></b>

    Нужно больше жирного!

    govnoacc, 29 Апреля 2013

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