zadach219.PAS

{* Задача 219 *}

Unit ZADACH219;
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 zadach219;

Uses zadach219.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; {* Ждем подтверждения пользователя *}
End.