Не используя стандартные функции (за исключением ABS), вычислить с точностью e>0 - Pascal
Формулировка задачи:
Считать, что заданная точность достигнута, если: очередное слагаемое по модулю меньше e(эпсилон).
Решение задачи: «Не используя стандартные функции (за исключением ABS), вычислить с точностью e>0»
textual
Листинг программы
var x,e,s,t:real; n:integer; begin clrscr; write('x='); readln(x); //x любое число repeat write('0<e<1 e='); //точность readln(e); until(e>0)and(e<1); n:=1; t:=x; s:=t; while abs(t)>e do begin n:=n+1; t:=t*x*x/(2*n-2)/(2*n-1); s:=s+t; end; writeln('s=',s:0:4); write('sh(x)=',(exp(x)-exp(-x))/2:0:4); readln end.
Объяснение кода листинга программы
- Объявлены переменные: x, e, s, t (реальные числа), n (целое число).
- Очистка экрана и ввод значения переменной x.
- Ввод значения переменной e с точностью e>0 и e<1.
- Инициализация счетчика n и начального значения переменной s.
- Начальное значение переменной t равно s.
- Цикл while с условием abs(t)>e выполняется до тех пор, пока абсолютное значение t больше заданной точности e.
- Внутри цикла происходит обновление значения переменной n, а затем t вычисляется по формуле t=txx/(2n-2)/(2n-1).
- Значение переменной s обновляется путем добавления значения t.
- После выхода из цикла while выводится значение переменной s с точностью до 4 знаков после запятой.
- Вычисляется значение переменной sh(x) по формуле sh(x)=(exp(x)-exp(-x))/2 и выводится с точностью до 4 знаков после запятой.
- Программа ожидает ввода данных с помощью функции readln.