Выводить обычные и рекуррентные способы решения функций. Перевод кода Delphi - C#

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста перевести этот код в C#. Задача состоит в том что должен выводить обычные и реккурентные способы решения функций - e^x, ln(x) через ln(1+x) и cos(x). Дисциплина называется числовые методы. Не обязательно в form, просто консольное сойдет.
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function fact(n:cardinal):extended;
var
 f:extended;
 i:cardinal;
begin
  if n=0 then f:=0 else f:=1;
   for i:=2 to n do
    f:=f*i;
    result:=f;
end;
 
function stepen(a:extended;n:integer):extended;
var
 i:integer;
begin
 result:=1;
 for i:=1 to n do
  result:=result*a;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
 s,s2,a,x,p,an,eps,sor,t:extended;
 n,i,k:integer;
 ps:boolean;
begin
sor:=0;
s:=0;
ps:=true;
 if edit1.text<>'' then begin
 x:=strtofloat(edit1.text);
 eps:=strtofloat(edit3.text);
 case radiogroup1.ItemIndex of
 
 0:begin
 sor:=exp(x);
 if x<0 then begin x:=x*(-1);ps:=false;end;
 case radiogroup2.ItemIndex of
  0:begin               //0
   s:=1+x;
   i:=2;
   an:=x;
   p:=1;
   repeat
    x:=x*an; //âîçâåäåГ*ГЁГҐ Г± ГІГҐГЇГҐГ*Гј
    p:=p*i;
    a:=x/p;              
    s:=s+a;
    inc(i);
   until abs(a)<=eps;
   end;
   1:begin
    a:=1;
    i:=1;
    s:=a;
    repeat
     a:=a*x/i;
     s:=s+a;
     inc(i);
    until abs(a)<=eps;
   end;
   end;
   if ps=false then s:=1/s;
    end;         
 
  1:begin
  x:=abs(x);
  while abs(x)>pi  do
   begin
    if x>pi then x:=x-pi else x:=x+pi;
  end;
  sor:=cos(x);
 s:=1;
 n:=0;
 repeat
   n:=n+2;
   a:=power(x,n)*power(-1,n div 2)/fact(n);
   s:=s+a;
 until (abs(a)<=eps);
 end;           //1
 
  2:begin                 //2                  ln(x+1)
    if x>-1 then
     begin
     sor:=ln(x+1);
      an:=x+1;
      k:=0;
      if an>2 then
       repeat
        an:=an/2;
        inc(k);
       until an<2;
      x:=an-1;
      i:=1;
      s:=x;
      n:=2;
      repeat
       i:=-i;
       a:=i*power(x,n)/n;
       inc(n);
       s:=s+a;
      until abs(a)<=eps;
      s:=k*ln(2)+s;
      end;
   end;
 
end; end;
edit4.Text:=floattostr(s);
edit5.Text:=floattostr(sor);
 
end;

end.

Решение задачи: «Выводить обычные и рекуррентные способы решения функций. Перевод кода Delphi»

textual
Листинг программы
function stepen(a:extended;n:integer):extended;
var
 i:integer;
begin
 result:=1;
 for i:=1 to n do
  result:=result*a;
end;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5