zadach115.PAS

{* Задача 115 *}

Unit ZADACH115;
Interface
Implementation
Begin
 writeln('Используя вспомогательную функцию нахождения cos(x)=1-x**2/2!+x**4/4!-x**6/6!+... процесс суммирования остановить если очередной член станет меньше 0.001. Вычислить для заданного N выражение: cosx+coscosx+...+coscos...cosx-n-раз');
End.

Program pas3764;

Uses zadach115.pas; {* Эту строку можно удалить *}
Uses crt; {* Вызов внешних функций *}
Var {* Объявление переменных *}
  s                   : real;
  x                   : real;
  i                   : longint;
  n                   : longint;
Function cosinus( x : real );
Var {* Объявление переменных *}
  ot : real;
  dr : real;
  ch : real;
  zn : longint;
  k  : longint;
Begin
  ot := 0;
  dr := x;
  zn := 1;
  k := 1;
  While abs(dr) > 0.001 Do
  Begin
    ot := ot + dr;
    ch := - dr * x * x;
    zn := zn * k * (k + 1);
    k := k + 2;
    dr := ch / zn;
  End;
  cosinus := ot;
End;
Begin
  clrscr; {* Очистка экрана *}
  write('n=');
  readln(n);
  write('x=');
  readln(x);
  s := 0;
  For i := 1 To n Do {* Переменная i увеличивается с 1 до n *}
  Begin
    x := x + cosinus(x);
    s := s + x;
  End;
  writeln('Ответ:', s : 5 : 4);
  readln; {* Ждем нажатия Enter *}
End.