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

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

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

Проверьте код пожалуйста, а то сам допереть не могу, в коде нет сравнения и "1-" в начале формулы (это сам допилю). Части программы проверял все работает (факториал и возведение в степень), а так выводит 0. Думаю ошибка простая просто я немного дебил и догадаться не могу.
uses crt;
var
factorial:longint;
p,s,s1,x,h,e:real;
b,u:byte;
begin
clrscr;
readln(x);
  while abs(e)>1000 do
  begin
  h:=h+1;
  b:=b+1;
  factorial:=1;
   for u:=2 to b do
   begin
   factorial:=factorial*u;
   end;
  e:=exp(ln(x)*h);
  s:=(e/factorial);
  p:=s+s1;
  s1:=s;
  end;
writeln(p:3:3);
readln;
end.
Сравнить полученное значение с e-x

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

textual
Листинг программы
uses crt;
var p,x,h,e:real;
    n:integer;
begin
clrscr;
repeat
write('Введите |х|<1000 x=');
readln(x);
until abs(x)<1000;
repeat
write('Введите точность вычислений 0<e<1 e=');
readln(e);
until (e>0)and(e<1);
n:=0;
h:=1;
p:=h;
while abs(h)>e do
 begin
  n:=n+1;
  h:=-h*x/n;
  p:=p+h;
  end;
writeln('Сумма ряда=',p:0:6);
write('e^-x=',exp(-x):0:6);
readln;
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