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

    +145

    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
    program bag; var numbers, weight, price : array[1..100] of byte; 
    fraction : array[1..100] of real; n, i, f, max, s, temp_i : byte; 
    temp_r : real; begin writeln('Input number of goods and maximal 
    weight: '); readln(n, max); writeln; randomize; for i := 1 to n do 
    begin numbers[i] := i; weight[i] := random(254) + 1; write(weight[i],
    ' '); price[i] := random(254) + 1; write(price[i], ' '); fraction[i]
    := price[i] / weight[i]; writeln(fraction[i]:0:2); end; f := 1; 
    while (f = 1) do begin f := 0; for i := 1 to n-1 do begin if (
    fraction[i] < fraction[i + 1]) then begin if (price[i] < price[i + 1
    ]) then begin temp_r := fraction[i + 1]; fraction[i + 1] := fraction[
    i]; fraction[i] := temp_r; temp_i := weight[i + 1]; weight[i + 1] := 
    weight[i]; weight[i] := temp_i; temp_i := numbers[i + 1]; numbers[i +
    1] := numbers[i]; numbers[i] := temp_i; f := 1; end; end; end; end; 
    s := 0; i := 1; while (s + weight[i] <= max) do begin writeln(numbers
    [i]); s := s + weight[i]; inc(i); end; readln; end.

    Geany отформатировал код :)

    Запостил: bazhenovc, 02 Декабря 2010

    Комментарии (16) RSS

    • >>random(254)
      да и код-то не очень
      Ответить
    • if then if... мдааа
      Ответить
      • Где тут if tnen if?
        Ответить
        • if (
          fraction[i] < fraction[i + 1]) then begin if (price[i] < price[i + 1
          ]) then.....
          Ответить
          • Замена внешнего and на then if позволяет сократить число скобочек в выражении, уменьшая шансы запутаться в нём.
            То есть then if - это по смыслу and низшего приоритета.
            Хотя в данном случае да, он излишен.
            Ответить
            • ну особенно при таком подстрочном форматировании читается еще хуже... and как бы охватывается параллельно, а then if последовательно... что еще больше напрягает
              Ответить
              • Форматирование не в тему, я потому и минусанул.
                При большом кол-ве скобок and уже не охватывается никак.
                Или, например, невозможно охватить параллельно выражение if (x > 0) and (y/x>1) . Так что от последовательного охвата никуда не деться.
                Ответить
                • ну не надо забывать о чувстве меры. А обычно, если параллельное выражение слишком сложное, то, возможно, стоит менять логику. Не всегда, конечно
                  Ответить
                • еще и unterminated string

                  http://pastebin.com/rtQCMEm4
                  Ответить
                  • Во, теперь видно. Зачем f целого типа, неясно. Зачем присвоение перед циклом - тоже. Есть же repeat until;
                    А ещё меня бесит, когда begin переносят, код становится мегажирным и уродливым!!!
                    А ещё стало видно (в той части, где делается обмен), что автор не знает структур.
                    И пузырьковая сортировка частично упорядоченного множества.
                    Ответить
                    • да, с f эквиеблистика знатная

                      > меня бесит, когда begin переносят
                      if not true then begin
                      { керниганопоклонство }
                      end
                      Ответить
    • А говно-то где? В форматировании? Тогда не смешно уже. Если в алгоритме, то из-за форматирования его не видно.
      То что минус.
      Ответить
    • Ну на то он и говнокод, не так ли?:)

      З.Ы. код вообще не мой
      Ответить
      • то, что ты запостил - не говнокод, а просто говно
        Ответить
        • Ну просто говно, какая разница? Главное что я поржал:)
          Ответить
          • Ну лично я никак не различаю данный код от кучи других примеров кода, где отвратительное форматирование. А смотреть каждый раз на один и тот же "прикол" - быстро наскучивает.
            Ответить

    Добавить комментарий