A
A
Alexanderietz2020-10-08 23:34:09
Pascal
Alexanderietz, 2020-10-08 23:34:09

What is the syntax error in the PascalABC program?

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.

Returns "Met 'else' but expected ';' " on line 47, that is, on the line where else is before while. What's wrong?

Answer the question

In order to leave comments, you need to log in

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question