Вычислить значение выражения - 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
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д