Ошибка в программе "встречено '.', а ожидвлось " - Pascal ABC
Формулировка задачи:
Ошибка в программе "встречено '.', а ожидалось ';' (последняя строка).
Программа вычисляет методом трапеции сразу четыре интеграла.
Листинг программы
- Program Trapecii;
- uses crt;
- var n1,n2,n3,n4:int64; a1,a2,a3,a4,b1,b2,b3,b4,h1,h2,h3,h4,s1,s2,s3,s4,x1,x2,x3,x4:real;
- function f1(x:real):real;
- function f2(x:real):real;
- function f3(x:real):real;
- function f4(x:real):real;
- begin
- f1:=(x*x+1)/((x*x*x+3*x+1)*(x*x*x+3*x+1));
- f2:=(sin^(-1)(x))/(sqrt(1+x));
- f3:=1/(x+1);
- f4:=sin(x)/(5+3*sin(x));
- end;
- begin
- clrScr;
- writeln('Введите a1,b1,n1'); readln(A1,B1,N1);
- writeln('Введите a2,b2,n2'); readln(A2,B2,N2);
- writeln('Введите a3,b3,n3'); readln(A3,B3,N3);
- writeln('Введите a4,b4,n4'); readln(A4,B4,N4);
- h1:=(b1-a1)/n1;
- x1:=a1;
- s1:=2*f1(x);
- h2:=(b2-a2)/n2;
- x2:=a2;
- s2:=2*f2(x);
- h3:=(b3-a3)/n3;
- x3:=a3;
- s3:=2*f3(x);
- h4:=(b4-a4)/n3;
- x4:=a4;
- s4:=2*f4(x);
- for i1: integer :=1 to (n1-1) do
- begin
- x1:=x1+h1;
- s1:=s1+2*f1(x);
- end;
- for i2: integer :=1 to (n2-1) do
- begin
- x2:=x2+h2;
- s2:=s2+2*f2(x);
- end;
- for i3: integer :=1 to (n3-1) do
- begin
- x3:=x3+h3;
- s3:=s3+2*f3(x);
- end;
- for i4: integer :=1 to (n4-1) do
- begin
- x4:=x4+h4;
- s4:=s4+2*f4(x);
- end;
- s1:=h1/2*(s1+f1(b1));
- s2:=h2/2*(s2+f2(b2));
- s3:=h3/2*(s3+f3(b3));
- s4:=h4/2*(s4+f4(b4));
- writeln(a1,' ',b1,' ',n1,' ',s1:0:6);
- writeln(a2,' ',b2,' ',n2,' ',s2:0:6);
- writeln(a3,' ',b3,' ',n3,' ',s3:0:6);
- writeln(a4,' ',b4,' ',n4,' ',s4:0:6);
- readln;
- end.
Решение задачи: «Ошибка в программе "встречено '.', а ожидвлось "»
textual
Листинг программы
- type func=function(x:real):real;
- function f1(x:real):real;
- begin
- f1:=(x*x+1)/((x*x*x+3*x+1)*(x*x*x+3*x+1));
- end;
- function f2(x:real):real;
- begin
- f2:=1/sin(x)/sqrt(1+x); //исправил Вашу функцию, не знаю верно ли, но sin^ такое не пишут
- end;
- function f3(x:real):real;
- begin
- f3:=1/(x+1);
- end;
- function f4(x:real):real;
- begin
- f4:=sin(x)/(5+3*sin(x));
- end;
- procedure trap(a,b,h:real;f:func;n:byte);
- var s,k:real;
- begin
- s:=(f(a)+f(b))/2;
- k:=a;
- while k<=b do
- begin
- k:=k+h;
- s:=s+f(k);
- end;
- s:=s*h;
- writeln('a',n,'=',a:0:1,' b',n,'=',b:0:1,' h',n,'=',h:0:2,' S',n,'=',s:0:3);
- end;
- begin
- trap(1,5,0.05,f1,1);
- trap(1,5,0.05,f2,2);
- trap(1,5,0.05,f3,3);
- trap(1,5,0.05,f4,4);
- end.
Объяснение кода листинга программы
Данный код представляет собой программу на языке Pascal ABC, которая реализует метод трассировки для вычисления значений функций f1, f2, f3 и f4.
- Тип
func
определяет функцию без параметров и возвращающим значение типаreal
. - Функции
f1
,f2
,f3
иf4
определяют соответственно четвертую, третью, вторую и первую функции из задания. Каждая функция принимает аргумент типаreal
и возвращает значение типаreal
. - Процедура
trap
определяет процедуру без параметров и содержит следующие переменные:a
,b
,h
иf
- аргументы функций, которые будут использоваться в процессе вычислений. Также в процедуре определены переменныеs
иk
типаreal
, которые будут использоваться для хранения промежуточных результатов. - В цикле
while
происходит вычисление среднего значения функцииf
на интервалах отk
доk+h
. Значение функцииf
вычисляется как сумма значений функций на двух концах интервала, разделенная на 2. Затем значение функцииf
добавляется к сумме переменныхs
иk
. - По завершении цикла выводится информация о значениях переменных
a
,b
,h
,s
иk
с помощью функцииwriteln
. - В конце программы вызываются процедуры
trap
для каждой функции с соответствующими значениями аргументов. Ошибки в программе:- В функции
f2
вместо использования функцииsin
следует использовать функциюsin(x)
, так как аргумент функцииsin
должен быть выражен в радианах. - В функции
f4
вместо использования функцииsin
следует использовать функциюsin(x)
, так как аргумент функцииsin
должен быть выражен в радианах.
- В функции
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д