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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2009, 11:08   #1
templllar
 
Регистрация: 13.04.2008
Сообщений: 9
По умолчанию Конвертация Delphi->C#

Может кто-нибудь помочь перевести Delphi код в C# ? код очень простой, но С# не знаю..

const CountF=3;
type
Arr=array[0..1] of real;
Arr2=array [0..1,0..1] of real;
Arr3=array [0..2,0..1] of real;
ArrSimp=array[0..2] of real;
type
TLogic= class
public
procedure Dihotomiya(a,b,eps:real;var Iter:Integer;var AnswerX:real;var Answerf:real);
procedure Newton(x,y,eps:real;var Iter:Integer;var AnswerX:Arr;var Answerf:real);
procedure Simplex(eps,x,y:real;var Answer:Arr; var Answerf:real;var Iter:integer);
private
function f(x:real):real;
function Round(x,eps:real):real;
function df(x:Arr):Arr;
function proizv(x:Arr;y:Arr2):Arr;
function Gesse(x:Arr):Arr2;
function df2(X11:Arr2;x:Arr):Arr2;
function SimpF(x,y:real): real;
end;
implementation

procedure TLogic.Dihotomiya(a,b,eps:real;var Iter:Integer;var AnswerX:real;var Answerf:real);
var
x1,x2,delta,f1,f2,EpsMeth:real;
Begin
Iter:=0;
delta:=eps/4;
repeat
Iter:=Iter+1;
x1:=(a+b-delta)/2;
x2:=(a+b+delta)/2;
f1:=f(x1);
f2:=f(x2);
if f1<=f2 then
b:=x2
else
a:=x1;
EpsMeth:=(b-a)/2;
until EpsMeth<=eps;
AnswerX:=(a+b)/2;
Answerf:=f(AnswerX);
end;


function TLOgic.f(x:real):real;
var Temp:real;
Begin
Temp:=Exp(-x)+Math.Power(x,4);
Result:= Temp;
end;




procedure TLogic.Newton(x,y,eps:real;var Iter:Integer;var AnswerX:Arr;var Answerf:real);
var
it1:integer;
x0,x1: Arr; //ïåðåìåííûå
df1,proiz:Arr;
Gess:Arr2;
Begin
Iter:=0;
x1[0]:=x;
x1[1]:=y;
repeat
x0:=x1;
Gess:=Gesse(x0);
Iter:=Iter+1;
df1:=df(x0);
Gess:=df2(Gess,x0);
proiz:=proizv(df1,Gess);
for it1:=0 to Length(x1)-1 do
x1[it1]:=x0[it1]- proiz[it1];
until ((Abs(x1[0]-x0[0])<=eps) AND ((Abs(x1[1]-x0[1])<=eps)) OR (Iter=50));
AnswerX:=x1;
Answerf:=0;
end;

function TLogic.df(x:Arr):Arr;
var Temp:Arr;
Begin
// Temp[0]:=3*SQR(x[0])-3;
// Temp[1]:=2*x[1]-2;
// Temp[0]:=8*x[0]-4*x[1]+1;
// Temp[1]:=6*x[1]-4*x[0];
Temp[0]:=2*x[0]-40*x[0]*(x[1]-Sqr(x[0]))-2;
Temp[1]:=20*x[1]-20*Sqr(x[0]);
//Temp[0]:=(exp(-0.5*x[0])*(-0.5-0.5*sqr(x[0])+2*x[0]))*sin(x[1]);
//Temp[1]:=(1+sqr(x[0]))*exp(-0.5/x[0])*cos(x[1]);
Result:=Temp;

end;


function TLogic.proizv(x:Arr;y:Arr2):Arr;

var Temp:Arr;
i,j:integer;
Begin
for i:=0 to Length(x)-1 do
Temp[i]:=0;
for i:=0 to Length(x)-1 do
for j:=0 to Length(x)-1 do
Temp[i]:=x[j]*y[j,i]+Temp[i];
Result:=Temp;
end;

function TLogic.Gesse(x:Arr):Arr2;
var Temp:Arr2;
Begin
Temp[0,0]:=120*Sqr(x[0])-40*x[1]+2;
Temp[0,1]:=-40*x[0];
Temp[1,0]:=Temp[0,1];
Temp[1,1]:=20;
result:=Temp;
End;



function TLogic.df2(X11:Arr2;x:Arr):Arr2;
var i,j:integer;
TempVal1,Opred:real;
Begin
Opred:=X11[0,0]*X11[1,1]-X11[1,0]*X11[0,1];
if Opred<>0 then
Begin
TempVal1:=X11[0,0];
X11[0,0]:=X11[1,1];
X11[1,1]:=TempVal1;
TempVal1:=X11[1,0];
X11[1,0]:=X11[0,1];
X11[0,1]:=TempVal1;
for i:=0 to Length(x)-1 do
for j:=0 to Length(x)-1 do
X11[i,j]:=Math.Power(-1,i+j) *X11[i,j]/Opred;
end;
Result:=X11;


end;
templllar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Конвертация pdf в xls Veroonya Компоненты Delphi 11 11.01.2016 17:06
Конвертация файла в БД Mixasik PHP 3 21.11.2009 21:35
Конвертация раскладки текста (Delphi) ekzobyte Помощь студентам 1 24.05.2009 17:29
Конвертация одной БД в другую Старовъръ БД в Delphi 2 19.08.2008 12:26
конвертация db в dbf? Eduard БД в Delphi 2 20.09.2007 13:24