Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2012, 14:35   #1
Дорош
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 7
По умолчанию Как переделать на процедурный тип?

Код:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var x,e,t,int,int1,h,x0,b:Real;
    a,i,n:Integer;
function step(x:Real;y:real):Real;
var pow:Real;
    l:Integer;
begin
if (x < 0) then pow := (-1)*Exp(y*Ln(Abs(x))) else
  if (x > 0) then pow := Exp(y*Ln(Abs(x))) else
  pow := 0;
  l := round(y);
  if (l mod 2 = 0) then pow:=Abs(pow);
  if (y = 0) then pow :=1;
  result:=pow;
end;
 function f(x:Real;t:real):real;
 begin
   result:=(step(x,t))/(Sqrt(1+sqr(x)));
 end;
 begin
   write('input t from[1,10]=');
   Readln(t);
   a:=1; b:=2;
   e:=0.01;
   h:=1;
   n:=Round((b-a));
   int:=0;
   for i:=1 to n do
   int:=int+f(a+((2*i-1)*h/2),t);
   int:=int*h;
   repeat
     int1:=int;
     n:=n*2;
     h:=(b-a)/n;
     int:=0;
     for i:=1 to n do
      int:=int+f(a+((2*i-1)*h/2),t);
      int:=int*h;
      until Abs(int1-int)<e;
      Writeln('integral=',int:0:5);
      Writeln('k-t tochok rozbutia=',n);
      Readln;
   { TODO -oUser -cConsole Main : Insert code here }
 end.

Последний раз редактировалось Дорош; 10.05.2012 в 14:40.
Дорош вне форума Ответить с цитированием
Старый 10.05.2012, 14:46   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так:
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
var x,e,t,int,int1,h,x0,b,astep,af:Real;
    a,i,n:Integer;

procedure step(x:Real;y:real);
var pow:Real;
    l:Integer;
begin
if (x < 0) then pow := (-1)*Exp(y*Ln(Abs(x))) else
  if (x > 0) then pow := Exp(y*Ln(Abs(x))) else
  pow := 0;
  l := round(y);
  if (l mod 2 = 0) then pow:=Abs(pow);
  if (y = 0) then pow :=1;
  astep:=pow;
end;

 procedure f(x:Real;t:real);
 begin
   step(x,t); 
   af:=astep/(Sqrt(1+sqr(x)));
 end;

 begin
   write('input t from[1,10]=');
   Readln(t);
   a:=1; b:=2;
   e:=0.01;
   h:=1;
   n:=Round((b-a));
   int:=0;

   for i:=1 to n do begin
    f(a+((2*i-1)*h/2),t); 
    int:=int+af;
   end;

   int:=int*h;
   repeat
     int1:=int;
     n:=n*2;
     h:=(b-a)/n;
     int:=0;

   for i:=1 to n do begin
    f(a+((2*i-1)*h/2),t); 
    int:=int+af;
   end;

      int:=int*h;
      until Abs(int1-int)<e;
      Writeln('integral=',int:0:5);
      Writeln('k-t tochok rozbutia=',n);
      Readln;
   { TODO -oUser -cConsole Main : Insert code here }
 end.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.05.2012, 14:52   #3
Дорош
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 7
По умолчанию

нам нужно функцыю передать в качестве параметра.
Дорош вне форума Ответить с цитированием
Старый 10.05.2012, 15:26   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нам нужно
Вам, Ваше Высочайшее Величество, нужно посредством рабов построить тип:
Код:
tp=procedure (x:Real;y:real);
И описать, скрепив королевской печатью, функцию:
Код:
procedure f(x:Real;t:real;stp:tp);
После вызвать на дуэль вот так:
Код:
result:=(stp(x,t))/(Sqrt(1+sqr(x)));
А саму f() так:
Код:
int:=int+f(a+((2*i-1)*h/2),t,step);
Насчет последнего могу ошибаться. Мы, крепостные паскаля не имеем - проверить не на чем.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 10.05.2012, 15:29   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

примерно так

Код:
type 
  Tstepfunc =procedure(x,y: real);

procedure f(x:Real;t:real; stepfunc: Tstepfunc );
begin
   stepfunc(x,t); 
   af:=astep/(Sqrt(1+sqr(x)));
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
две задачи на тип INTEGER и тип CHAR inspiron13 Помощь студентам 5 04.01.2011 00:17
две задачи на тип INTEGER и тип CHAR inspiron13 Паскаль, Turbo Pascal, PascalABC.NET 3 04.01.2011 00:08
Различия между const <Тип> и <Тип> RIO Общие вопросы C/C++ 3 03.12.2010 15:28
Первести тип real в тип strings sokla Помощь студентам 5 07.01.2010 18:04
Перевести тип String в тип PChar (Delphi 7) ScorpioN_T Помощь студентам 2 28.10.2008 22:13