Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Переписать готовый алгоритм в виде


Автор: ADAfonin 5.12.2006, 11:22
Здравствуйте!

Пожалуйста, помогите выполнить следующее:

Оформить вычисление суммы ряда из этой программы:

Код

Program lab2_variant4;
var
 a0,k,a,m,e,x,sum,zna4,raz:real;
Begin

  writeln('Vvedite takoe 4islo x, 4tobi abs(x)<1 , x=’');
    readln(x);
  writeln('Vvedite to4nost’ e=');
    readln(e);
  m:=3;
  k:=6;
  a0:=1+x/2;
  a:=-1/2/4*sqr(x);
  sum:=a0+a;
  while abs(a-a0) > e do
  begin
    a0:=a;
    a:=-a0*x*m/k;
    m:=m+2;
    k:=k+2;
    sum:=sum+a;
  end;
  zna4:=sqrt(1+x);
  raz:=abs(z-s);
  writeln;
   writeln('Ssuma ryada sum=',s:1:6);
   writeln('Zna4enie virazheniya zna4=',z:1:6);
   writeln('Raznica raz=',r:1:6);
  readkey;
end.



четырьмя способами: 

в виде функции; 
в виде процедуры; 
в виде функции в отдельном файле, который включается в компиляцию с помощью директивы $I; 
в виде процедуры в отдельном файле, который включается в компиляцию с помощью директивы $I. 

Все входные данные и результаты передаются в/из процедуру/функцию через список параметров, глобальные переменные использовать нельзя. 

Заранее спасибо!

Автор: Rodman 9.12.2006, 14:56
Цитата(ADAfonin @  5.12.2006,  10:22 Найти цитируемый пост)
в виде функции

Код

Program lab2_variant4;
var
 x1,e1,a0,k,a,m,sum,zna4,raz:real;
function MyFunc(x,e):Real;
var x,e:real;
begin
 m:=3;
  k:=6;
  a0:=1+x/2;
  a:=-1/2/4*sqr(x);
  sum:=a0+a;
  while abs(a-a0) > e do
  begin
    a0:=a;
    a:=-a0*x*m/k;
    m:=m+2;
    k:=k+2;
    sum:=sum+a;
  end;
  MyFunc=sum; 
end;

Begin
  writeln('Vvedite takoe 4islo x, 4tobi abs(x)<1 , x=’');
    readln(x1);
  writeln('Vvedite to4nost’ e=');
    readln(e1);
  MyFunc(x1,e1);
  writeln;
   writeln('Ssuma ryada sum=',sum:1:6);
   writeln('Zna4enie virazheniya zna4=',aqrt(1+x):1:6);
   writeln('Raznica raz=',abs(sqrt-sum):1:6);
  readkey;
end.


Добавлено @ 14:57 
Цитата(ADAfonin @  5.12.2006,  10:22 Найти цитируемый пост)
в виде процедуры; 

Код

Program lab2_variant4;
var
 x,e,a0,k,a,m,sum,zna4,raz:real;
procedure MyFunc(x,e);
begin
 m:=3;
  k:=6;
  a0:=1+x/2;
  a:=-1/2/4*sqr(x);
  sum:=a0+a;
  while abs(a-a0) > e do
  begin
    a0:=a;
    a:=-a0*x*m/k;
    m:=m+2;
    k:=k+2;
    sum:=sum+a;
  end;
end;

Begin
  writeln('Vvedite takoe 4islo x, 4tobi abs(x)<1 , x=’');
    readln(x);
  writeln('Vvedite to4nost’ e=');
    readln(e);
  MyFunc;
  writeln;
   writeln('Ssuma ryada sum=',sum:1:6);
   writeln('Zna4enie virazheniya zna4=',aqrt(1+x):1:6);
   writeln('Raznica raz=',abs(sqrt-sum):1:6);
  readkey;
end.


Добавлено @ 15:00 
Цитата(ADAfonin @  5.12.2006,  10:22 Найти цитируемый пост)
в виде функции в отдельном файле, который включается в компиляцию с помощью директивы $I; 
в виде процедуры в отдельном файле, который включается в компиляцию с помощью директивы $I. 



а для этого просто напиши функцию (процедуру) в другом файле и пропиши имена файлов в uses

Автор: volvo877 9.12.2006, 15:47
Цитата(Rodman @  9.12.2006,  13:56 Найти цитируемый пост)
а для этого просто напиши функцию (процедуру) в другом файле и пропиши имена файлов в uses

С чего бы это в Uses? Человек просил {$I}, а не модули...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)