Вычислить значение выражения - Free Pascal (291)

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

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

Проверьте код пожалуйста, а то сам допереть не могу, в коде нет сравнения и "1-" в начале формулы (это сам допилю). Части программы проверял все работает (факториал и возведение в степень), а так выводит 0. Думаю ошибка простая просто я немного дебил и догадаться не могу.
Листинг программы
  1. uses crt;
  2. var
  3. factorial:longint;
  4. p,s,s1,x,h,e:real;
  5. b,u:byte;
  6. begin
  7. clrscr;
  8. readln(x);
  9. while abs(e)>1000 do
  10. begin
  11. h:=h+1;
  12. b:=b+1;
  13. factorial:=1;
  14. for u:=2 to b do
  15. begin
  16. factorial:=factorial*u;
  17. end;
  18. e:=exp(ln(x)*h);
  19. s:=(e/factorial);
  20. p:=s+s1;
  21. s1:=s;
  22. end;
  23. writeln(p:3:3);
  24. readln;
  25. end.
Сравнить полученное значение с e-x

Решение задачи: «Вычислить значение выражения»

textual
Листинг программы
  1. uses crt;
  2. var p,x,h,e:real;
  3.     n:integer;
  4. begin
  5. clrscr;
  6. repeat
  7. write('Введите |х|<1000 x=');
  8. readln(x);
  9. until abs(x)<1000;
  10. repeat
  11. write('Введите точность вычислений 0<e<1 e=');
  12. readln(e);
  13. until (e>0)and(e<1);
  14. n:=0;
  15. h:=1;
  16. p:=h;
  17. while abs(h)>e do
  18.  begin
  19.   n:=n+1;
  20.   h:=-h*x/n;
  21.   p:=p+h;
  22.   end;
  23. writeln('Сумма ряда=',p:0:6);
  24. write('e^-x=',exp(-x):0:6);
  25. readln;
  26. end.

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

  1. Используемая библиотека: В коде используется библиотека CRT (Console I/O), которая позволяет выполнять операции ввода-вывода с консолью.
  2. Типы данных и переменные:
    • p, x, h, e: объявлены как real, представляют числа с плавающей точкой.
    • n: объявлен как integer, представляет целое число.
  3. Цель программы: Программа предназначена для вычисления суммы ряда Тейлора для экспоненциальной функции.
  4. Циклы:
    • Внешний цикл repeat-until используется для ввода значения переменной x. Цикл продолжается до тех пор, пока значение x не удовлетворяет условию |x|<1000.
    • Внутренний цикл repeat-until используется для ввода значения переменной e. Цикл продолжается до тех пор, пока значение e не удовлетворяет условию 0<e<1.
  5. Вычисления:
    • Переменная n инициализируется значением 0.
    • Переменная h инициализируется значением 1.
    • Переменная p инициализируется значением h.
    • В цикле while происходит итеративное вычисление значения h с помощью формулы h = -h*x/n. Значение p обновляется с помощью формулы p = p + h. Цикл продолжается, пока абсолютное значение h больше заданной точности e.
    • Значение p выводится с помощью функции writeln, при этом выводится только 6 знаков после запятой с помощью спецификатора формата :0:6.
    • Значение e^-x вычисляется с помощью функции exp, а затем выводится с помощью функции writeln.
  6. Обработка ошибок: В коде не предусмотрена обработка ошибок, связанных с вводом некорректных значений x или e.

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


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

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

12   голосов , оценка 3.917 из 5

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

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

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