Вычислить значение выражения - Free Pascal (291)
Формулировка задачи:
Проверьте код пожалуйста, а то сам допереть не могу, в коде нет сравнения и "1-" в начале формулы (это сам допилю). Части программы проверял все работает (факториал и возведение в степень), а так выводит 0. Думаю ошибка простая просто я немного дебил и догадаться не могу.
Сравнить полученное значение с e-x
Листинг программы
- 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.
Решение задачи: «Вычислить значение выражения»
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.
Объяснение кода листинга программы
- Используемая библиотека: В коде используется библиотека CRT (Console I/O), которая позволяет выполнять операции ввода-вывода с консолью.
- Типы данных и переменные:
p
,x
,h
,e
: объявлены какreal
, представляют числа с плавающей точкой.n
: объявлен какinteger
, представляет целое число.
- Цель программы: Программа предназначена для вычисления суммы ряда Тейлора для экспоненциальной функции.
- Циклы:
- Внешний цикл
repeat-until
используется для ввода значения переменнойx
. Цикл продолжается до тех пор, пока значениеx
не удовлетворяет условию|x|<1000
. - Внутренний цикл
repeat-until
используется для ввода значения переменнойe
. Цикл продолжается до тех пор, пока значениеe
не удовлетворяет условию0<e<1
.
- Внешний цикл
- Вычисления:
- Переменная
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
.
- Переменная
- Обработка ошибок: В коде не предусмотрена обработка ошибок, связанных с вводом некорректных значений
x
илиe
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д