Помогите пожайлуста, при компеляции выдается ошибка, я ее не могу исправить, потому что не понимаю в чем она заключается
Код
Program MPD; Uses WinCrt; Type func=function(xa:Real):Real; Function F(xa:Real):Real;Far; Procedure MrPD(Aa,Ba,Ea:Real; F:func; Var xa:Real);
Var A,B,Exp,x:Real; F:func; w:text; {функция y=f(t)} Function F; Begin F:=(Sqr(xa)*xa)+3*xa+5; End; {метод половинного деления} Procedure MrPD; Var z,x,y:Real; Begin x:=F(Aa); Repeat xa:=(Aa+Ba)/2; y:=F(xa); If y*z>0 Then begin Aa:=xa; z:=y; end Else Ba:=xa; Until Abs(Ba-Aa)<Ea; End;
Begin Assign(w,'C:\Rezlab\MPD.doc'); ReWrite(w); WriteLn(w,'Определение корней уравнения методом половинного деления'); WriteLn(w); WriteLn('Введи значение левой границы интервала А');Read(A); WriteLn('Введи значение правой границы интервала В');Read(B); WriteLn('Введите погрешность Exp');Read(Exp); MPD(A,B,Exp,f,x); WriteLn(w,'Корень по методу половинного деления равен', x:7:4); Close(w); End.
Автор: volvo 3.10.2006 19:32
Цитата
не понимаю в чем она заключается
Компилятор считает, что у тебя функция MrPD является вложенной в функцию F, но тогда синтаксически это реализовано неверно.
Если же MrPD НЕ вложена в F, то реализация F должна быть либо известна ПЕРЕД началом реализации MrPD, либо должна применяться директива Forward, показывающая что реализация F будет позже...
Скорее всего, ты имела в виду вот это:
Program MPD; Uses WinCrt; Type func=function(xa:Real):Real;
Function F(xa:Real):Real;Far; Begin F:=(Sqr(xa)*xa)+3*xa+5; End;
Procedure MrPD(Aa,Ba,Ea:Real; F:func; Var xa:Real); Var z,x,y:Real; Begin x:=F(Aa); Repeat xa:=(Aa+Ba)/2; y:=F(xa); If y*z>0 Then begin Aa:=xa; z:=y; end Else Ba:=xa; Until Abs(Ba-Aa)<Ea; End;
Var A,B,Exp,x:Real; w:text;
Begin Assign(w,'C:\Rezlab\MPD.doc'); ReWrite(w); WriteLn(w,'Определение корней уравнения методом половинного деления'); WriteLn(w); WriteLn('Введи значение левой границы интервала А');Read(A); WriteLn('Введи значение правой границы интервала В');Read(B); WriteLn('Введите погрешность Exp');Read(Exp); MrPD(A,B,Exp,f,x); WriteLn(w,'Корень по методу половинного деления равен', x:7:4); Close(w); End.