1. Куча / Говнокод #4265

    +143

    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
    uses graph, crt;
    var gd,gm,i:integer;
        x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5,l,r:integer;
    procedure calculationx(r:integer);
    begin
      x1:=x0;
      x2:=x0+trunc(r*sin(36*pi/180));
      x3:=x0-trunc(r*cos(18*pi/180));
      x4:=x0+trunc(r*cos(18*pi/180));
      x5:=x0-trunc(r*sin(36*pi/180));
    end;
    procedure drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5:integer);
    begin
      line(x1,y1,x2,y2);
      line(x2,y2,x3,y3);
      line(x3,y3,x4,y4);
      line(x4,y4,x5,y5);
      line(x5,y5,x1,y1);
    end;
    procedure stars(r:integer); var y1,y2,y3,y4,y5:integer;
    begin
      calculationx(r);
      y1:=y0-r;
      y2:=y0+trunc(r*cos(36*pi/180));
      y3:=y0-trunc(r*sin(18*pi/180));
      y4:=y0-trunc(r*sin(18*pi/180));
      y5:=y0+trunc(r*cos(36*pi/180));
      drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5);
      r:=trunc(r*sin(18*pi/180)/sin(126*pi/180));
      calculationx(r);
      y1:=y0+r;
      y2:=y0-trunc(r*cos(36*pi/180));
      y3:=y0+trunc(r*sin(18*pi/180));
      y4:=y0+trunc(r*sin(18*pi/180));
      y5:=y0-trunc(r*cos(36*pi/180));
      drow(x1,y1,x2,y2,x3,y3,x4,y4,x5,y5);
      if (r>0) then stars(trunc(r*sin(18*pi/180)/sin(126*pi/180)));
    end;
    begin
      read(l);
      initgraph(gd,gm,'');
      x0:=getmaxx div 2;
      y0:=getmaxy div 2;
      r:=trunc(l/cos(18*pi/180)/2);
      {circle(x0,y0,r);}
      stars(r);
      readkey;
    end.

    классический унылый быдлокод, или "за что я ненавижу паскаль"

    описание автора:

    Известно, что у правильной пятиконечной звезды вершины лежат в вершинах правильного пятиугольника. Так же пятиугольник образуется при пересечении ее сторон. Так что в пентаграмму можно вписать еще одну пентаграмму. Что, собственно, я и сделала.
    После несложных операций с рисунками мне удалось определить углы между стороной пентакла и отрезком, соединяющим вершину и центр, и между стороной правильного пятиугольника и высотой (медианой) к ней. Из углов удалось рассчитать нужные соотношения.
    Попробуйте самостоятельно посчитать их, прежде чем читать решение.
    Построение
    Программа нарисует звезду по длине ее стороны. Т.е. программе нужен расчет координат вершин и длины меньшей звезды от большей. Я использовала рекурсию для рисования звезды.

    http://clubs.ya.ru/4611686018427394475/replies.xml?item_no=1045&nocookiesupport =yes

    Запостил: Lure Of Chaos, 16 Сентября 2010

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

    • > drow
      Сколько же раз я видел это слово в студенческих лабах...
      Ответить
    • даже мне неясно чем тут согрешил пасцаль

      помимо очевидного идиотизма тут по-хорошему надо завести массиви заменить эту не совсем оч. хуету,
      y1:=y0+r;

      ЗЫ ну и конечно pi/180 само собой
      y2:=y0-trunc(r*cos(36*pi/180));
      y3:=y0+trunc(r*sin(18*pi/180));
      y4:=y0+trunc(r*sin(18*pi/180));
      y5:=y0-trunc(r*cos(36*pi/180));
      поворотом на 72 градуса - а их выводить как 360/5, а 5 задать константой или параметром ну чтоб вообще не было мейджиков вроде 126=18*7

      ЗЫ ну и конечно pi/180 само собой
      Ответить
      • потому что и здесь "так принято".
        Ответить
      • показать все, что скрыторекурсия - это серьезно

        за градусы и массиви лови минус
        Ответить
        • >>за градусы и массиви лови минус
          на минус мне насрать, но раз уж влезаешь то пожалуста объясни
          в чем радость делать 5 строк одинаковой логики?
          y1:=y0+r;
          y2:=y0-trunc(r*cos(36*pi/180));
          y3:=y0+trunc(r*sin(18*pi/180));
          y4:=y0+trunc(r*sin(18*pi/180));
          y5:=y0-trunc(r*cos(36*pi/180));

          а если человек против пентаграмм - ему что код заново переписывать? менять все магические 18, 36, добавлять строку?
          Ответить
          • причем 3 раза эти пять строк повтояются
            Ответить
          • что ты собираешься хранить в массиви?
            Ответить
            • 0_0 все с вами ясно.
              на этот вопрос сможет ответить только кеп.
              Ответить
              • лол. жаль, что съехал с темы: так бы и сказал, что не знаешь, а про массиви ляпнул для красного словца

                чуть не забыл! за самопальные константы лови еще адын минус
                Ответить
        • ах да я забыл, что у говнокодеров массиви - это плохой тон, а переменные x0,y0,x1,y1,x2,y2,x3,y3,x4,y4,x5,y5 - это стильно
          Ответить
      • это настоящий турбо паскаль для доса. там оптимизатора не ту.

        мы сейчас можем писать "правильно" только потому что оптимизаторующие компиляторы есть норма жизни и процы современные все стерпят...
        Ответить
    • В пентаграмму вписать пентаграмму?
      САТАНИСТЫ В ТРЕДЕ КОДЕ!
      Ответить
    • такой хороший яндекс, и такая дерьмовая программа)
      Ответить

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