1. Современный паскаль// PascalABC.NET 3.2, сборка 1370 от 24.12.2016// Внимание! Если программа не работает, обновите версию!begin var a:=ReadReal('a='); var x:=power(10,a)+cos(a+1); var y:=log10(abs(arctan(x)-sin(a*x))); Writeln('x=',x,', y=',y)end.
Примерa= 2.105x=126.35097753811, y=-0.162831822729058
2. Типовой "школьный" паскаль (как не надо учить)program Vasya;var a,x,y:real;begin Write('a='); Read(a); x:=exp(a*ln(10))+cos(a+1); y:=ln(abs(arctan(x)-sin(a*x)))/ln(10); Writeln('x=',x,', y=',y)end.
Примерa=2.105x=126.35097753811, y=-0.1628318227290233. Сравнение решений- "школьный" вариант длиннее. Больше текста - дольше писать, больше шансов сделать ошибку.- результат вычисления y различный. Разница составляет вроде немного - всего 0.000000000000035 (это 0.35×10⁻¹³), но если делать много вычислений, ошибки могут накапливаться.Вычисленное с более высокой точностью (и округленное до такой же, как в паскале разрядности) значение y равно -0.162831822729052, т.е. "современное" решение оказывается еще и на один порядок точнее. За счет чего? За счет уменьшения ошибок при меньшем количестве вычислений - их сократили функции power и log10.