1. Pascal / Говнокод #2113

    +96.4

    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
    temp:= min(Mon.VGA,Comp.VGA);
    inc(n,temp);
    dec(Mon.VGA,temp);
    dec(Comp.VGA,temp);
    temp:= min(Mon.DVI,Comp.DVI);
    inc(n,temp);
    dec(Mon.DVI,temp);
    dec(Comp.DVI,temp);
    temp:= min(Mon.Multi,Comp.Multi);
    inc(n,temp);
    dec(Mon.Multi,temp);
    dec(Comp.Multi,temp);
    if Mon.Multi<>0
     then
      begin
      temp:= min(Mon.Multi,Comp.VGA);
      inc(n,temp);
      dec(Mon.Multi,temp);
      dec(Comp.VGA,temp);
      temp:= min(Mon.Multi,Comp.DVI);
      inc(n,temp);
      dec(Mon.Multi,temp);
      dec(Comp.DVI,temp);
      end;
    if Comp.Multi<>0
     then
      begin
      temp:= min(Mon.VGA,Comp.Multi);
      inc(n,temp);
      dec(Mon.VGA,temp);
      dec(Comp.Multi,temp);
      temp:= min(Mon.DVI,Comp.Multi);
      inc(n,temp);
      dec(Mon.DVI,temp);
      dec(Comp.Multi,temp);
      end;

    Из ещё одного решения олимпиадной задачи. Вроде подсчитывает количество компов, которые можно собрать при учёте, что у системников и мониторов может быть интерфейс DVI, VGA или оба сразу (Multi).

    Сан Саныч, 09 Ноября 2009

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

    +98.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    // Этот говняжный кусочек кода лечит работу козьих шариков.
    for iter := 0 to staticSet.fields.Count - 1 do
      if staticSet.fields[i].IsNull then
        ;
    // Конец говняжного кусочка кода

    Вкратце: staticSet - декоратор (обертка) для ADO Recordset; чтобы синхронизировать обертку и носителя, надо было дернуть любой метод. Автор выбрал R/O property IsNull. Но каков вброс. Комментарии прошу считать частью кода. Если учесть, что плотность комментариев 1 на примерно 60 КБ кода.

    Billy the Kidd, 09 Ноября 2009

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

    +84.7

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    const
       found=true;
       false=true;
    //лжи нет, да будет только правда....
    .....

    препод долго немог понять как программа вообще работает
    %DarkSvesh

    darksvesh, 07 Ноября 2009

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

    +99.9

    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
    procedure TConsFrame.FillConsGrid(ConsHistory: TConsumptionHistory;
      Date: TDateTime);
    var
      I: Integer;
    begin
      for I := 0 to ConsHistory.Count - 1 do
      begin
        if not (TConsumptionRecord(ConsHistory[I]).State = osDeleted) then
          if DateOf(TConsumptionRecord(ConsHistory[I]).Date) = DateOf(Date) then
            if ((not FIsSelTime) or
               (FIsSelTime and (FSelTime = FormatDateTime('HH:mm', TConsumptionRecord(ConsHistory[I]).Date)))) then
              if ((not FIsSelName) or  (FIsSelName and (pos(FSelName, TProduct.TGlobalCollection.Products.RecursiveGetNodeByID(TConsumptionRecord(ConsHistory[I]).IDProduct)).Name) > 0))) then
                ConsGrid.AddChild(nil, ConsHistory[I]);
      end;
    end;

    Чтобы это безобразие написать пришлось студию на два монитора раздвинуть =)))
    И то ладно еще что на 4 проверки разбил - а то в одной вообще страшно было. Потом как оказалось у меня в цикле идет вызов рекурсивной процедуры, короче все виснет. Так что это безобразие в контексте моей программы оказалось еще и бесолезным %)

    Washington, 31 Октября 2009

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

    +92.8

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    procedure MyLine(X1, Y1, X2, Y2: Integer; Color: TColor; Canvas: TCanvas);
    begin
      if (Abs(X1 - X2) <= 1) and (Abs(Y1 - Y2) <= 1) then
        Canvas.Pixels[X1, Y1] := Color
      else
      begin
        MyLine(X1, Y1, (X1 + X2) shr 1, (Y1 + Y2) shr 1, Color, Canvas);
        MyLine((X1 + X2) shr 1, (Y1 + Y2) shr 1, X2, Y2, Color, Canvas);
      end;
    end;

    Когда-то давно очень увлекался рисованием в ДОС-е.
    До сих пор помню процедуру быстрого рисования кривой прямой %)
    представляю на суд тот же алгоритм.

    Arch, 29 Октября 2009

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

    +106.1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    var
    x,y,arccos,arctg:real;
    begin
    y:=arccos(sin(3*x+1.3))-x*exp(ln(e)*arctg(x))+0.7;
    ...

    один умный парень написал ))

    mal1sh, 23 Октября 2009

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

    −34.5

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    7. 7
    function IsTrue(Value: boolean): boolean;
    begin
     if Value <> true then result := false
     else if Value <> false then result := true
     else // внимание!
       result := (not true) and (not false);
    end;

    jack128, 22 Октября 2009

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

    +95.4

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    найдено в коде EhLib в процедуре TCustomDBLookupComboboxEh.CMMouseWheel
    
    if FListVisible then
              with TMessage(Message) do
                if FDataList.Perform(CM_MOUSEWHEEL, WParam, LParam) <> 0 then
                begin
                  Exit;
                  Result := 1;
                end;
    
    поэтому, если скролить комбобокс на паренте все комбобоксы скролятся тоже. вначале долго жрал.

    homolibere, 15 Октября 2009

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

    +107.9

    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
    if l<9
     then
      if r<10
       then
        s:= inttostr(l)
       else
        s:= '10'
     else
      if l<99
       then
        if r<100
         then
          s:= inttostr(l)
         else
          s:= '100'
       else
        if l<999
         then
          if r<1000
           then
            s:= inttostr(l)
           else
            s:= '1000'
         else
          if l<9999
           then
            if r<10000
             then
              s:= inttostr(l)
             else
              s:= '10000'
           else
            if l<99999
             then
              if r<100000
               then
                s:= inttostr(l)
               else
                s:= '100000'
             else
              if l<999999
               then
                if r<1000000
                 then
                  s:= inttostr(l)
                 else
                  s:= '1000000'
               else
                if l<9999999
                 then
                  if r<10000000
                   then
                    s:= inttostr(l)
                   else
                  s:= '10000000'
                 else
                  if l<99999999
                   then
                    if r<100000000
                     then
                      s:= inttostr(l)
                     else
                      s:= '100000000'
                   else
                    if l<999999999
                     then
                      if r<1000000000
                       then
                        s:= inttostr(l)
                       else
                        s:= '1000000000';

    Нашёл в своём решении какой-то олимпиадной задачи. Долго пытался вспомнить, в каком состоянии был...

    Сан Саныч, 05 Октября 2009

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

    +91.1

    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
    s := TStringList.Create;
      LocalIniFile.ReadSection(sPad, s);
      for x := 0 to ActionListMenu.ActionCount - 1 do
      begin
        for y := 0 to 9 do
        begin
          for z := 0 to s.Count - 1 do
          begin
            if (Length(s[z]) <> Length('Tag0')) and (s[z] = 'Tag' + IntToStr(ActionListMenu[x].Tag + y)) then
            begin
              try
                ActionListMenu[x].Execute;
              except
              end;
            end;
          end;
        end;
      end;
      s.Free;

    Эм, ну комментарии излишни?

    Drone, 22 Сентября 2009

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