Помощь - Поиск - Пользователи - Календарь
Полная версия: Модули((
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
Buka
Мне надо сделать модуль по программе:
Program pr6;
uses crt;
var a, b, eps, I2: real; N: longint;
procedure proc(eps, a, b: real; var I2: real; var N: longint);
var I1: real;
function Intg(a, b: real; N: longint): real;
var x, s, dx: real; i: longint;
function f1(x: real): real;
begin
f1:= (1 + sqrt(x))/sqr(x)
end;
begin
s:= f1(a); x:= a;
dx:= (b-a)/N;
for i:=1 to N do begin
x:= x + dx;
s:= s + f1(x)
end;
Intg:= dx*s
end;
begin
I1:= 0;
N:= 100;
repeat
I2:= Intg(a, b, N);
if abs(I1-I2) < eps then break
else begin
I1:= I2; N:= N + 100
end
until false
end;
begin clrscr;
write('Введите a, b, eps -> ');
readln(a, b, eps);
proc(eps, a, b, I2, N);
writeln(' Результаты : ');
writeln('I2 = ', I2:12:6);
writeln('Кол-во итераций = ', N:10);
readkey
end.

Делаю что-то типа:

Unit lab6_15
interface
var a, b, eps, I2:real;
N:longint;
procedure proc(eps, a, b:real; var I2:real; var N:longint);
function Intg(a, b:real; N:longint):real;
function f1(x:real):real;
implementation
procedure proc;
var I1:real;
function Intg ;
var x, s, dx: real; i:longint;
function f1;
begin
f1:=x*exp(x)*sin(x);
end;
end.


а он 12 ошибку выводит((( понять ничё не могу.
volvo
Во-первых, добавь точку с запятой после названия модуля, а во-вторых, где у тебя само тело функции Intg? Потерялось... Добавь его, все будет работать...

Update
Бррр... Форматирование программы в таких случаях - очень полезная вещь:

Unit lab6_15;

interface

procedure proc(eps, a, b: real; var I2: real; var N: longint);

implementation

procedure proc(eps, a, b: real; var I2: real; var N: longint);
var I1: real;

function Intg(a, b: real; N: longint): real;
var x, s, dx: real; i: longint;

function f1(x: real): real;
begin
f1:= (1 + sqrt(x))/sqr(x)
end;

begin { intg }
s:= f1(a); x:= a;
dx:= (b-a)/N;
for i:=1 to N do begin
x:= x + dx;
s:= s + f1(x)
end;
Intg:= dx*s
end; { intg }

begin { proc }
I1:= 0;
N:= 100;
repeat
I2:= Intg(a, b, N);
if abs(I1-I2) < eps then break
else begin
I1:= I2; N:= N + 100
end
until false
end; { proc }

end.
Гораздо проще разобраться, что где, правда? В Interface-секции должно быть только описание процедуры самого верхнего уровня - Proc. Вложенные в нее (Intg, а уж тем более F1) не видны "снаружи", они ж вложенные, следовательно видимы только изнутри Proc...
Buka
Спасибо, теперь я поняла в чём ошибка
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.