Помощь - Поиск - Пользователи - Календарь
Полная версия: Модули((
Форум «Всё о Паскале» > 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
Спасибо, теперь я поняла в чём ошибка
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.