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

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

    +91

    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
    procedure TForm1.Button3Click(Sender: TObject);
    var
      i, j, n, c, Day1, Month1, Year1: word;
    begin
      Memo1.Clear;
      Try
        Day1 := StrToInt(Edit7.Text);
        Month1 := StrToInt(Edit8.Text);
        Year1 := StrToInt(Edit9.Text);
      Except
        ShowMessage('Введите нынешнюю дату!');
      end;
    
      { Сортировка по дате и цене товара. Ввыод результата сортировки на экран }
      for i := 1 to Nzap do
        With Sklad[i] do
        begin
          if Sklad[i].Cost >= 1000000 then
          begin
            if abs(Year1 - Sklad[i].Year) >= 2 then
              Memo1.Lines.Add(Nm + ' ' + 'Цена:' + IntToStr(Cost) + 'руб.' + ' ' +
                'Кол-во:' + IntToStr(Quantity) + ' ' + 'шт.' + ' ' + 'День-' +
                IntToStr(Day) + ' ' + 'Мес.-' + IntToStr(Month) + ' ' + 'Год-' +
                IntToStr(Year))
            else
            begin
              if abs(Month1 - Sklad[i].Month) >= 2 then
                Memo1.Lines.Add(Nm + ' ' + 'Цена:' + IntToStr(Cost) + 'руб.' + ' ' +
                  'Кол-во:' + IntToStr(Quantity) + ' ' + 'шт.' + ' ' + 'День-' +
                  IntToStr(Day) + ' ' + 'Мес.-' + IntToStr(Month) + ' ' + 'Год-' +
                  IntToStr(Year))
              else
              begin
                if (Day1 - Sklad[i].Day = 0) and (Month1 <> Sklad[i].Month) and
                  (Year1 <> Sklad[i].Year) then
                  Memo1.Lines.Add(Nm + ' ' + 'Цена:' + IntToStr(Cost) + 'руб.' + ' '
                    + 'Кол-во:' + IntToStr(Quantity) + ' ' + 'шт.' + ' ' + 'День-' +
                    IntToStr(Day) + ' ' + 'Мес.-' + IntToStr(Month) + ' ' + 'Год-' +
                    IntToStr(Year));
              end;
            end;
          end;
        end;
    end;

    Ищем товар лежащий на складе больше месяца и имеющий цену больше миллиона рублей...

    Toha, 25 Декабря 2014

    Комментарии (0)
  3. Pascal / Говнокод #16846

    +91

    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
    program lab2;
    
     const n = 5;
     var i:integer;
     var A, x1, dx:single;
     var arrayX : array[1..n] of single;
     var arrayY : array[1..n] of single;
    
    begin
      readln(A);
      x1:= -1 * 2.2 * A;
      dx:= A/5;
      arrayX[1]:= x1;
      for i:=2 to n do
       arrayX[i]:= arrayX[i - 1] + dx;
      for i:=1 to n do
      begin
       if (arrayX[i] < 0) then
        arrayY[i]:= -1 * sqrt(sqrt(16 * sqr(sqr(A)) + 4 * sqr(A) * sqr(arrayX[i] + A)) - sqr(arrayX[i] + A) - sqr(A))
       else
        arrayY[i]:= sqrt(sqr(A) - sqr(arrayX[i] + A)) - 2 * A;
       writeln(arrayX[i], ' ; ', arrayY[i]);
      end;
      readln;
    end.

    govno, govno, govnyanoe

    GOVNOgovnyanoe, 13 Октября 2014

    Комментарии (10)
  4. Pascal / Говнокод #16182

    +91

    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
    for li:=LL-2 downto 1 do
            begin
              ag:=ml_(a[li], m_(gen(len(a[li]), 1, 1), a[li]) );
    
                cp(
                  b[li],
                  ml_(
                    ml(
                      t(W[li]),
                      from2(b[li+1], li <> LL-2)
                    )
                    ,
                    ag
                  )
                );
            end;

    Функциональное программирование в императивном стиле.

    icune, 18 Июня 2014

    Комментарии (4)
  5. Pascal / Говнокод #15819

    +91

    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
    while usedthrds<>cn do
              begin
               i:=i+1;
               if manual=0 then
                if i>ccpun then
                 break;
               if manual=1 then
                begin
                 gotoxy(1,stroka);read(cputime[i]);
                end
               else
                begin
                 gotoxy(1,stroka);write(cputime[i]);
                end;
               realsumcpu:=cputime[i]+ost;
               sumcpu:=cputime[i]+ost;
               found:=0;
               bin:=0;
               min:=1;max:=cn;
               search:
               while (min<=max) and (found=0) do
                begin
                 bin:=bin+1;
                 mid:=(min+max)div 2;
                 if sumcpu<sortedthrd[mid] then
                  max:=mid-1
                 else
                  if  sumcpu>sortedthrd[mid] then
                   min:=mid+1
                  else
                   if used[mid]=1 then
                    begin
                     if mid<>cn then
                      begin
                       l:=1;
                       while sortedthrd[mid+l]=sortedthrd[mid] do
                        begin
                         if used[mid+l]<>1 then
                          begin
                            mdldmas:=sortedthrd[mid+l];
                            mdldnum:=sortednum[mid+l];
                            ost:=realsumcpu-mdldmas;
                            used[mid+l]:=1;
                            found:=1;break;
                          end;
                        l:=l+1;
                        if mid+l>cn then break;
                      end;
                  end;
                if (mid<>1) and (found=0) then
                  begin
                    l:=1;
                    while sortedthrd[mid-l]=sortedthrd[mid] do
                      begin
                        if used[mid-l]<>1 then
                          begin
                            mdldmas:=sortedthrd[mid-l];
                            mdldnum:=sortednum[mid-l];
                            ost:=realsumcpu-mdldmas;
                            used[mid-l]:=1;
                            found:=1;break;
                          end;
                        l:=l+1;
                        if mid-l<1 then break;
                      end;
                  end;
                break;
              end
            else
              begin
                mdldmas:=sortedthrd[mid];
                mdldnum:=sortednum[mid];
                used[mid]:=1;
                ost:=realsumcpu-mdldmas;
                found:=1;
                break;
              end;
          end;
    
    if (found=0) and (sumcpu>0) then
      begin
        sumcpu:=sumcpu-1;bin:=0;min:=1;max:=cn;
        goto search;
      end;
    if found=0 then
        ost:=realsumcpu
    else
      begin
        gotoxy(6,stroka);write (realsumcpu);gotoxy (12,stroka);write (mdldmas);gotoxy(18,stroka);write(mdldnum);gotoxy(24,stroka);write(ost);gotoxy(30,stroka);write(bin);
        stroka:=stroka+1;
      end;
    if found=1 then
      begin
        realsumcpu:=ost;
        sumcpu:=ost;
        found:=0;bin:=0;min:=1;max:=cn;
        goto search;
      end;

    Как студенты пишут сортировку (полная версия https://gist.github.com/Karasiq/11184652)

    jkhne4pijgberg, 22 Апреля 2014

    Комментарии (5)
  6. Pascal / Говнокод #15435

    +91

    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
    if not DM.For_Akc_Base_Update.InTransaction then
          DM.For_Akc_Base_Update.StartTransaction;
                  Close;
                  SQL.Clear;
                  SQL.Add('insert into Bank (BNAME, full_name, bik, ks, inn, rkc,postind,postcity,postaddr,telef ) values ');
                  SQL.Add('('''+edName.Text+''', '''+mFull_Name.Text+''', ');
                  SQL.Add(' '''+edBik.Text+''', ');
                  SQL.Add(''''+edKS.Text+''', '''+edInn.Text+''', ');
                  SQL.Add(''''+edRkc.Text+''', '''+edInd.Text+''', ');
                  SQL.Add(''''+edCity.Text+''', '''+edAdr.Text+''', ');
                  SQL.Add(''''+edTel.Text+''' )');
                  ExecSQL;
                  DM.For_Akc_Base_Update.Commit;
                      DM.Bank.Close;
                      DM.Bank.Open;

    Принял проект. Начал смотреть. Вот так вот добавляют запись в таблицу. И так по всему проекту.

    Vince, 12 Марта 2014

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

    +91

    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
    function TDuel.getFieldStr(p1: ansistring; p2: ansistring; p3: ansistring = ''): ansistring;
    begin
      Result := '';
      if p1 = 'p1' then begin
        if p2 = 'attack' then begin
          if p3 = '' then Result := p1attack;
          if p3 = '1' then Result := p1attack1;
        end;
        if p2 = 'defend' then begin
          Result := p1defend;
        end;
      end;
      if p1 = 'p2' then begin
        if p2 = 'attack' then begin
          if p3 = '' then Result := p2attack;
          if p3 = '1' then Result := p2attack1;
        end;
        if p2 = 'defend' then begin
          Result := p2defend;
        end;
      end;
    end;
    
    function TDuel.getFieldInt(p1: ansistring; p2: ansistring; p3: ansistring = ''): integer;
    begin
      if p1 = 'player' then begin
        if p2 = '1' then Result := player1;
        if p2 = '2' then Result := player2;
      end;
    
      if p1 = 'p' then begin
        if p2 = '1' then begin
          if p3 = 'dmg' then Result := p1dmg;
        end;
        if p2 = '2' then begin
          if p3 = 'dmg' then Result := p2dmg;
        end;
      end;
    end;
    
    procedure TDuel.updFieldInt(p1: ansistring; p2: ansistring; value: integer);
    begin
      if p1 = 'p1' then begin
        if p2 = 'dmg' then p1dmg := p1dmg + value;
      end;
      if p1 = 'p2' then begin
        if p2 = 'dmg' then p2dmg := p2dmg + value;
      end;
    end;

    Вот такой шедевр программерской мысли остался в коде сервера браузерки от первых девелоперов. Я так и не распарсил пока, что он делает-)

    Cynicrus, 17 Февраля 2014

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

    +91

    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
    procedure RecursiveVisibility(e : PCreature; oct, depth : integer; slopeA, slopeB : single);
    var
      x, y : integer;
    begin
      case oct of
        1 : begin
          y := e^.y - depth;                                                { initialize y }
          x := round(e^.x - slopeA * depth);                                { initialize z }
          while GetSlopeStd(x, y, e^.x, e^.y) >= slopeB do begin            { while in octant }
            if GetVisDistance(x, y, e^.x, e^.y) <= mw then begin            { if within max visual range }
              if WorldSurface[x, y].entity^.obstruct then begin             { if obstruction }
                if not WorldSurface[x - 1, y].entity^.obstruct then begin   { if no prior obstruction }
                  RecursiveVisibility(e, 1, depth + 1, slopeA, GetSlopeStd(x - 0.5, y + 0.5, e^.x, e^.y));
                end;                                                        { ^create recursive scan }
              end else begin                                                { no obstruction }
                if WorldSurface[x - 1, y].entity^.obstruct then begin       { if prior obstruction }
                  slopeA := GetSlopeStd(x - 0.5, y - 0.5, e^.x, e^.y);      { adjust slope for later recursion }
                end;
              end;
              WorldSurface[x, y].visibility := 3;                           { set block visible }
            end;
            inc(x);
          end;
          dec(x)
        end;
        2 : begin
          y := e^.y - depth;                                                { initialize y }
          x := round(e^.x + slopeA * depth);                                { initialize z }
          while GetSlopeStd(x, y, e^.x, e^.y) <= slopeB do begin            { while in octant }
            if GetVisDistance(x, y, e^.x, e^.y) <= mw then begin            { if within max visual range }
              if WorldSurface[x, y].entity^.obstruct then begin             { if obstruction }
                if not WorldSurface[x + 1, y].entity^.obstruct then begin   { if no prior obstruction }
                  RecursiveVisibility(e, 2, depth + 1, slopeA, GetSlopeStd(x + 0.5, y + 0.5, e^.x, e^.y));
                end;                                                        { ^create recursive scan }
              end else begin                                                { no obstruction }
                if WorldSurface[x + 1, y].entity^.obstruct then begin       { if prior obstruction }
                  slopeA := -GetSlopeStd(x + 0.5, y - 0.5, e^.x, e^.y);     { adjust slope for later recursion }
                end;
              end;
              WorldSurface[x, y].visibility := 3;                           { set block visible }
            end;
            dec(x);
          end;
          inc(x)
        end;
     // Далее всё в таком же духе.

    Отсюда: http://roguebasin.roguelikedevelopment.org/index.php?title=FOV_using_recursive_shad owcasting_-_improved
    Можно было сделать менее говнокодистей?

    Govnocoder#0xFF, 11 Декабря 2012

    Комментарии (9)
  9. Java / Говнокод #11977

    +91

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    8. 8
    public static 
    	String readFile(String file) {
    		return Read.file(  Reflection.getCallerClass(2), file,"\n");
    	}
    	public static 
    	String readFile(Class c, String file, final String lineBreaker) {
    		return Read.stream(c.getResourceAsStream(file),lineBreaker);
    	}

    Я уже как-то раз наступил на эту хрень.
    Но ничё - сегодня снова вот решил написать - удобно ведь.

    3.14159265, 22 Октября 2012

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

    +91

    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
    private void changeTabItem(object parameter)
            {
                if (SelectedTabIndex == SelectedTabIndexOld) return;
                if (SelectedTabIndex != 0)
                {
                    if ([надо сохранить])
                    {
                        if ([попытка сохранить удалась]) SelectedTabIndexOld = SelectedTabIndex;
                        else SelectedTabIndex = 0;
                    }
                    else SelectedTabIndexOld = SelectedTabIndex;
    
                    if (SelectedTabIndex == 1)
                        [обновить древо]
    
                }
                else if (SelectedTabIndex != 1)
                {
                    if ([надо сохранить])
                    {
                        if ([попытка сохранить удалась]) SelectedTabIndexOld = SelectedTabIndex;
                        else SelectedTabIndex = 1;
                    }
                    else SelectedTabIndexOld = SelectedTabIndex;
                    if (SelectedTabIndex == 0)
                        [обновить древо]
                }
            }

    Раскопки продолжаются. Теперь Вашему вниманию предлагается "женское" переключение вкладок, работающее "от противного". В данном случае две вкладки, а теперь представим что надо добавить ещё пару. =)

    DukeGonzo, 16 Мая 2012

    Комментарии (24)
  11. PHP / Говнокод #10172

    +91

    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
    // Организовываем вывод сообщений
    do 
    {
        printf ("<div class='border'> \n
        <p class='pa'>    
        Имя отправителя: %s; &nbsp;&nbsp;&nbsp; Дата отправления: %s; &nbsp;&nbsp;&nbsp; <a href='admin.php?exe=answer&id=%s'>Ответ администрации</a> &nbsp;&nbsp;&nbsp; <a href='admin.php?exe=edite&id=%s'>Редактировать</a> &nbsp;&nbsp;&nbsp;  <a href='admin.php?exe=delete&id=%s'>Удалить</a></p>\n<p align='justify'>%s</p>\n<span class='spaa'><i>%s</i></span>\n</div>",  
        $myrow_gb1['name'], $myrow_gb1['dmy'], $myrow_gb1['id'], $myrow_gb1['id'], $myrow_gb1['id'], $myrow_gb1['mes'], $myrow_gb1['kom']);
    }
    while ($myrow_gb1 = mysql_fetch_array($result_gb1)); 
    
    // Проверяем нужны ли стрелки назад
    if ($page != 1) $pervpage = '<a href=admin.php?exe=main&page=1>Первая</a> | <a href=admin.php?exe=main&page='. ($page - 1) .'>Предыдущая</a> | ';
    // Проверяем нужны ли стрелки вперед
    if ($page != $total) $nextpage = ' | <a href=admin.php?exe=main&page='. ($page + 1) .'>Следующая</a> | <a href=admin.php?exe=main&page=' .$total. '>Последняя</a>';
    
    // Находим две ближайшие станицы с обоих краев, если они есть
    if($page - 5 > 0) $page5left = ' <a href=admin.php?exe=main&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
    if($page - 4 > 0) $page4left = ' <a href=admin.php?exe=main&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
    if($page - 3 > 0) $page3left = ' <a href=admin.php?exe=main&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
    if($page - 2 > 0) $page2left = ' <a href=admin.php?exe=main&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
    if($page - 1 > 0) $page1left = ' <a href=admin.php?exe=main&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';
    
    if($page + 5 <= $total) $page5right = ' | <a href=admin.php?exe=main&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
    if($page + 4 <= $total) $page4right = ' | <a href=admin.php?exe=main&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
    if($page + 3 <= $total) $page3right = ' | <a href=admin.php?exe=main&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
    if($page + 2 <= $total) $page2right = ' | <a href=admin.php?exe=main&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
    if($page + 1 <= $total) $page1right = ' | <a href=admin.php?exe=main&page='. ($page + 1) .'>'. ($page + 1) .'</a>';
    
    // Вывод меню если страниц больше одной
    
    if ($total > 1)
    {
    Error_Reporting(E_ALL & ~E_NOTICE);
    echo "<center>";
    echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
    echo "</center>";
    }

    Продолжение этого: http://govnokod.ru/10169

    Мартин, 03 Мая 2012

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