1. 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) RSS

    • Ничего не попутал?
      Ответить
    • а рекурсия где?
      Ответить
      • В строке 75.

        P.S. Хм, стоп. А нет тут рекурсии. Это из-за ебанутого форматирования в одну колонку и без пустых строк кажется, что она есть... В 21 строке начинается паскалий main, и из него просто в цикле вызывают Peres.
        Ответить
        • Я это и имел в виду, никто даже не плюсанул!
          Ответить
          • Так ругаетесь, будто ваш код. Энивей уже разобрались, что к чему.
            Ответить
            • Давно не общался с паскальщиками, растерялся, был взволнован ;)
              Ответить
              • > Давно не общался с паскальщиками
                А как же Тарас?
                Ответить
    • лаба
      Ответить
      • Мне кажется лабам не место на этом сайте. Их много, они почти все говнокод, но говнокод однообразный и неинтересный (хотя креатив бывает, да). Люди, которые их выполняют еще только учатся и делают первые шаги в этой области. Возможно, и шаги последние. Сделали для галочки, закончили вуз и пошли помидорой торговать на рынке, зачем им программирование в жизни?
        Ответить
      • ты мне открыл глаза!
        Ответить
    • Паскаль, как много в этом звуке давно это было.
      Ответить
    • Типичная студенческая паскалепортянка. Плавали - знаем.
      Ответить

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