program Laboratory3;
// Общий член ряда имеет вид ((-1)^n) * (2 * n + 1) * x^(2 * n))/(2 * n)!
var
x, e, s: real;
i: integer;
// x - аргумент функционального ряда
// e - точность, с которой надо посчитать сумму функционального ряда
// i - счетчик
// s - сумма функционального ряда на шаге i
function factorial(n: real): real;
begin
if(n = 0) then
factorial := 1.0
else
factorial := n * factorial(n - 1);
end;
function degree(x: real; n: integer): real;
begin
var p: real;
var j: integer;
p := 1.0;
if(n = 0) then
degree := 0.0
else
for j := 0 to n do
p := p * x;
degree := p;
end;
begin
write('Введите аргумент x: '); readln(x);
write('Введите точность e, с которой вычислится сумма функционального ряда: '); readln(e);
while(e <= 0) do begin
write('Введите положительную точность e'); readln(e);
end;
s := 0.0;
i := 0;
try
if(x = 0.0) then
s := 1.0;
writeln('Сумма функционального ряда s = 1.0 с точностью e = ', e);
writeln('Число членов в вычисляемом функциональном ряде i = ', i + 1)
else
while(Abs(Cos(x) - x * Sin(x) - s) > e) do
begin
s := s + degree(-1.0, i) * (((2.0 * i) + 1.0) * (degree(x, i) * degree(x, i))/(factorial(2 * i)));
i := i + 1;
end;
writeln('Сумма функционального ряда s = ', s, ' с точностью e = ', e);
writeln('Число членов в вычисляемом функциональном ряде i = ', i);
except
on System.StackOverflowException do
writeln('Стек переполнен');
end;
end.
Выдает "Встречено 'else', а ожидалось ';' " на 47 строчке, то есть в строке, где else перед while. Что не так?