Вычисление функции с заданной точностью - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Вариант №21 в прикрепленном изображении Помогите найти ошибку, пишет "Программа завершена из-за переполнения программного стека"
Листинг программы
  1. program p1;
  2. var
  3. n:integer;
  4. p: integer;
  5. x,e,f,f1:real;
  6. function fac(p: integer):integer;
  7. begin
  8. if p=1 then fac:=1 else fac:=p*fac(p-1);
  9. end;
  10. begin
  11. writeln('Введите х');
  12. readln(x);
  13. writeln('Введите e');
  14. readln(e);
  15. f:=pi/2;
  16. f1:=0;
  17. while (abs(f1-f)>e) do
  18. begin
  19. f1:=f;
  20. f:=f-((fac(2*n)*exp(ln(x) *(2*n+1)))/(exp(ln(4) * n)*fac(n)*(2*n+1)));
  21. n:=n+1;
  22. end;
  23. writeln(f);
  24. end.

Решение задачи: «Вычисление функции с заданной точностью»

textual
Листинг программы
  1. program p1;
  2.  
  3. var
  4.   n: integer;
  5.   p: integer;
  6.   x, e, f, f1: real;
  7.  
  8. function fac(p: integer): integer;
  9. begin
  10.   if p = 1 then fac := 1 else fac := p * fac(p - 1);
  11. end;
  12.  
  13. begin
  14.   writeln('Введите х');
  15.   readln(x);
  16.   writeln('Введите e');
  17.   readln(e);
  18.   f := pi / 2;
  19.   f1 := 0;
  20.   n := 1;
  21.   while (abs(f1 - f) > e) do
  22.   begin
  23.     f1 := f;
  24.     f := f - ((fac(2 * n) * exp(ln(x) * (2 * n + 1))) / (exp(ln(4) * n) * fac(n) * (2 * n + 1)));
  25.     n := n + 1;
  26.   end;
  27.   writeln(f);
  28. end.

Объяснение кода листинга программы

  1. Создается программа p1.
  2. Определяются переменные: n, p, x, e, f, f1 типа integer, real.
  3. Определяется функция fac(p: integer) типа integer.
  4. Вычисляется значение функции fac при p = 1 и присваивается переменной fac.
  5. Задаются начальные значения переменных n, p, x, e, f, f1.
  6. Выводится запрос на ввод значения x.
  7. Читается значение x.
  8. Выводится запрос на ввод значения e.
  9. Читается значение e.
  10. Инициализируется переменная f значением pi / 2.
  11. Инициализируется переменная f1 значением 0.
  12. Инициализируется переменная n значением 1.
  13. Запускается цикл while, который выполняется, пока abs(f1 - f) > e.
  14. Внутри цикла вычисляется значение f1.
  15. Вычисляется значение f.
  16. Увеличивается значение n на 1.
  17. Вычисляется значение f.
  18. Повторяются шаги 14-17 до тех пор, пока abs(f1 - f) <= e.
  19. Выводится значение f.
  20. Программа завершается.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.143 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы