Показать сообщение отдельно

  #601  
Старый 06.06.2008, 18:21
A2GIL
Познающий
Регистрация: 31.08.2007
Сообщений: 94
Провел на форуме:
422909

Репутация: 200
Отправить сообщение для A2GIL с помощью ICQ
По умолчанию

2Catsy

Цитата:
помогите пожалуйста
(паскаль)
1) сумма с точностью
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых

2) рекурсия
Даны действительные числа x и ε (x≠0, ε > 0). Вычислить с точностью ε и указать количество учтенных слагаемых
Вычисление выражения под знаком суммы выполнить через рекурсию.
Эх студент...


Код:
var
 Sx,e:real;
 x:integer;
 k:word;

function Factorial(n: Word): Int64;
var
  f: Int64;
  i: Integer;
begin
  f := 1;
  for i := 2 to n do
    f := f * i;
  Factorial := f;
end;

function Degree(x: real;y:word): real;
begin
if (x=0) then begin
   Degree:=0;
 end
else begin
 Degree:=Exp(y*Ln(abs(x)));
if (x<0) and (y mod 2<>0) then begin
   Degree:=(-1)*Exp(y*Ln(abs(x)));
 end;
end;
end;

function RecursiveSum(x:integer;e:real):real;
begin
 sx:=sx+(Degree((-1),k)*Degree((x/2),2*k+1))/(Factorial(k)*Factorial(k+1));
  if Abs(Sx)<e then
     RecursiveSum(x,e);
 RecursiveSum:=Sx;
end;

begin
 ClrScr;
 Sx:=0;
 k:=0;
 write('Vvedite x (x!=0) : ');readln(x);
 write('Vvedite e (e>0) : ');readln(e);
 if (e<=0) or (x=0) then
  begin
   writeln('Error!');
   writeln('Press any key to exit...');
   readln;
   exit;
  end;
 writeln('****************************');
 writeln('1) Summa s tochnostju e:');
 writeln;
  while abs(Sx)<e do
   begin
    sx:=sx+(Degree(-1,k)*Degree(x,4*k+1))/(Factorial(2*k)*(4*k+1));
    k:=k+1;
   end;
   writeln(Sx);
   writeln;
  writeln('****************************');
  writeln('2) Recursiya s tochnostju e:');
  writeln;
  Sx:=0;
  k:=0;
  Sx:=RecursiveSum(x,e);
  Writeln(Sx);
  writeln;
 readln;
 
Ответить с цитированием