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

    +95

    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
    program z1;
    
     function func (x: real): real;
     const e = 0.000000000000001; {15 знаков после запятой}
     var f: real; {переменая для расчета двойного факториала}
         i, k: integer; {счетчик проходов, i-общий, k-частный}
         d: real; {добавляемая дельта}
         y: real; {переменная искомого значения}
     begin
      y := 1.0;
      i := 1;
      repeat
        f := 1;                 {----------}
        k := i;                 {--расчет--}
        while (k >= 2) do begin {-двойного-}
          f := f * k;           {факториала}
          k := k - 2;           {----------}
        end;                    {----------}
        
        d := 1;                 {---------------------}
        for k := 1 to i do      {считаем степень числа}
          d := d * x;           {---------------------}
        
        d := d / f;             {-----------------находим d-----------------}
        if (d < e) then break;  {проверяем ее на попадание в разрядную сетку}
        
        y := y + d;
        i := i + 1;
      until (false);
      func := y;
     end;
     
    var x: real;
     
    begin
      write ('Введите x: ');
      readln (x);
      writeln ('y = ', func (x):3:15);
    end.

    Запостил: maksim_ovcharik, 09 Ноября 2010

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

    • http://lurkmore.ru/images/e/ec/Nigravrach.jpg
      Ответить
    • Говно в том, что каждый новый член ряда вычисляется заномо циклом, а не получается из предыдущего.
      Этот говнокод хоть и не смешон, но его надо сохранить, чтобы показывать студентам, как не надо считать ряды.
      Не топите его.
      Ответить
    • лаба какого-то имбицила -- фтопку...

      после:
      const e = 0.000000000000001; {15 знаков после запятой}
      можно даже и не надеяться на нормальное решение...
      Ответить
      • в смысле? это точность вычисления...
        Ответить
        • нумерал не использует экспоненциальную нотацию ∴ неилитно
          Ответить
          • но это всё равно не говорит о том, что дальше будет кака )
            Ответить
        • судя по каменту {проверяем ее на попадание в разрядную сетку} хотят поймать машинный нуль
          Ответить
        • 1E-15 тогда уж напиши хотя бы. И комент не понадобится, и нагдядно всё.
          Ответить
          • Для школоты это же очень сложно. С нулями понятнее :)
            Ответить

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