Как перевести код с delphi на С#? - C#

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

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

В общем у меня есть 2 кода программ написанных на delphi. Мне нужны полностью работающие эти программы, но на С#.... Помогите!)
type
  TForm1 = class(TForm) XPManifest1: TXPManifest; Edit1: TEdit; Edit2: TEdit; Edit4: TEdit; Button1: TButton; MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; Memo1: TMemo; Label1: TLabel; Label2: TLabel; Label4: TLabel; Label6: TLabel; Label8: TLabel; Edit7: TEdit; Button2: TButton; Image1: TImage; Image2: TImage; Image3: TImage; Image4: TImage; Image5: TImage; Image6: TImage; procedure N4Click(Sender: TObject); procedure N3Click(Sender: TObject); procedure N2Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender:TObject);
 
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  n:array of integer;
  m:array of integer;
  s:array of array of Real;
  v1:array of array of Real;//матрица для закона распределения состояний и вероятностей
  sl:array of real;
 
implementation
{$R *.dfm}
 
procedure TForm1.N4Click(Sender: TObject);
begin
close;
end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
form1.Edit1.Text:='';
form1.Edit2.Text:='';
form1.Edit4.Text:='';
form1.Edit7.Text:='';
memo1.Lines.Text:='';
end;
 
procedure TForm1.N2Click(Sender: TObject);
begin
ShowMessage('Выполнил:Казанцев Виталий'+#13+'группа 07-ВТ-1'+#13+'ИЗ2');
end;
 
procedure TForm1.Button1Click(Sender: TObject);
  var takt,i,nak1,nak2,y,u,v,x,razn,ne:integer;
  b,a,t,t2,l,mu,nu,p1,p2,l2:real;
      psi:real;
      m:boolean;
    w:real;
     // label   GotoLabel;
begin
try  //обработка исключительных ситуаций
randomize;//генератор случайных чисел
if (Edit1.Text='') or (Edit2.Text='') or (Edit4.Text='') or (Edit7.Text='') then
ShowMessage('Вы ввели не все параметры!') //проверка заполнения полей необходимыми данными
else  begin
t:=strtoint(edit2.text);//время обслуживания одного пенсионера 1м опреатором (мю1, т.е. 1 поток)
t2:=strtoint(edit7.text);//время обслуживания пенсионера вторым оператором (мю2, т.е. второй поток)
takt:=StrToInt(Edit4.Text);//количество тактов (за которое время будут получены данные по системе)
 
l:=StrToInt(Edit1.Text);//плотность потока пенсионеров
//--------------------------------------------------------------------------------
  a:= 2;//внутреннее вероятностного автомата А, приравнивается первому интервалу
  b:= 1;//внутреннее значение вероятностного автомата В
  x:= 0;//выходной сигнал автомата А
  y:= 0;//выходной сигнал автомата В
  u:= 0;//детерминированный автомат u - сколько поступило заявок
  v:= 0;//детерминированный автомат v - сколько обслужено заявок
  nak1:=0;//обнуление накопителя первого потока заявок(от просто больных)
  nak2:=0;//обнуление накопителя второго потока заявок(от больных со скорой помощи)
   ne:=0;
 
for i:= takt downto 0 do begin
 randomize;
 
    if (a > 1) then begin a:= a-1;  x:= 0;
    end else  begin
           a:= round(-60/l*ln(random)); //генерация случайной величины (промежутка времени между заявками)
         x:= 1
              end;

   // Если очереди одинаковы, то вновь прибывшая заявка с равной вероятностью занимает место в одной из них.
     if (x=1) and (nak1=nak2) then
     begin
    psi:= random(2);
if psi=1 then
nak1:=nak1+1 //вероятность появления  1 потока
else
nak2:=nak2+1//вероятность появления  2потока
     end else
        //Всякая вновь прибывшая заявка становится в более короткую очередь, если очередь не равна по длине.
      if (x=1) and (nak1<nak2) then
      begin
    nak1:=nak1+x;
    end//накопитель для первого потока
    else
    if (x=1) and (nak2<nak1) then
      begin
    nak2:=nak2+x;
    end;//накопитель для второго потока
 
      if (b > 1) then begin //пенсионер обслуживается
      b:= b-1; y:= 0;
    end else
      if (b <= 1)and(x = 0) then begin
        b:= 0;  y:= 0;
      end else
          if (b <= 1)and(nak2>=nak1) then begin
          b:= t2;//ound(-60/mu*ln(random));//генерация случайной величины (времени обслуживания)
          y:= 1;
        end else
        if (b <= 1)and(nak1>nak2) then begin
          b:= t;//ound(-60/mu*ln(random));
          y:= 1;
        end;
     v:= v + y;//накапливание количества обработанных заявок
 
  end;
 
Memo1.Lines.Clear;
  {определение характеристик СМОР}
memo1.Lines.Add('Количество поступивших пенсионеров к 1оператору: '+IntToStr(nak1));
memo1.Lines.Add('Количество поступивших пенсионеров ко 2оператору '+IntToStr(nak2));
memo1.Lines.Add('Общее количество обслуженных пенсионеров: '+IntToStr(v));
ne:=(nak1+nak2)-v;
memo1.Lines.Add('Общее количество недождавшихся пенсионеров: '+IntToStr(ne));
end;
except
ShowMessage('Один или несколько параметров введены неправильно!')
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
 
end.
type
  TForm1 = class(TForm)  Label1: TLabel; Edit1: TEdit; Label2: TLabel;
Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7:   TLabel; Edit2: TEdit  Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Label8: TLabel; Label9: TLabel; Edit6: TEdit; Edit7: TEdit; Label10: TLabel; Edit8: TEdit; Button1: TButton; StringGrid1: TStringGrid; Label11: TLabel; Edit9: TEdit;
   XPManifest1: TXPManifest; Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   private
   { Private declarations }
   public
    { Public declarations }
   end;
 
var
  Form1: TForm1;
  
  s1: array [1..2,1..100] of integer;
  s2: array [1..2,1..100] of  integer;
  tact,mat_oj,m1,n1,lambda1,m2,n2,lambda2:integer; //входные параметры
  sigma:real;
      i,j,sl,a,x,zanyato1,zanyato2,ob_kol_zayavok,proshli_1_fazu,proshli_obe_fazi:integer;
  ob1,ob2,otkaz,pol_ob  :integer;
  summa12,ver_polnogo_obsl,ver_obsl_1fazi:real;
implementation
   
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
 label
 metka1;
 label
  metka2;
begin
try //обработка исключений
randomize; //генератор случайных чисел
if (Edit1.Text='') or (Edit2.Text='') or (Edit3.Text='') or
(Edit4.Text='') or (Edit5.Text='') or (Edit6.Text='')  or (edit9.Text='')
 or (Edit7.Text='') or (Edit8.Text='') then //проверка заполнения необходимых данных
ShowMessage('Вы ввели не все параметры!')
else
  begin
tact:=StrToInt(Edit1.Text);//количество тактов
mat_oj:=StrToInt(Edit6.Text);//среднее значение
sigma:=StrToFloat(Edit7.Text);//среднее отклонение
m1:=StrToInt(Edit8.Text);//количество мест в накопителе перед первой фазой обслуживания
n1:=StrToInt(Edit2.Text);//количество каналов обслуживания  первой фазы
lambda1:=strtoint(edit3.Text); //производительность каналов обслуживания первой фазы
m2:=strtoint(edit9.Text);   //количество мест в накопителе перед второй фазой обслуживания
n2:=strtoint(edit4.Text);   //  количество каналов обслуживания  второй  фазы
lambda2:=strtoint(edit5.Text); //производительность каналов обслуживания второй фазы
for i:=1 to n1 do
 begin
   s1[1,i]:=0;  //обнуление матрицы s1
   s1[2,i]:=0;
 end;
for i:=1 to n2 do
 begin
   s2[1,i]:=0; //обнуление матрицы s2
   s2[2,i]:=0;
 end;
 
zanyato1:=0;  //количество занятых мест в накопителе перед первой фазой
zanyato2:=0;   //количество занятых мест в накопителе перед второй фазой обслуживания
a:=1;    //внутреннее состояние автомата А
ob1:=0; ob2:=0; otkaz:=0;
pol_ob:=0;
//счетчики
ob_kol_zayavok:=0; //для общего количества заявок
proshli_1_fazu:=0; //для заявок, которые прошли только первую фазу обслуживания
proshli_obe_fazi:=0;   //для заявок прошедших и первую, и вторую фазу обслуживания
 
   {составление ТУФП}
 for j:= tact downto 0 do
  begin
   if a>1 then  begin   a:=a-1; x:=0;
    end else
         begin
           summa12:=0;
           for i:=1 to 12 do
           summa12:=summa12+random;
           a:=round(mat_oj+sigma*(summa12-6));
                x:=1;
         end;
ob_kol_zayavok:=ob_kol_zayavok+x;
  zanyato1:=zanyato1+x;//детерминированный автомат для моделирования накопителя 1
ob1:=ob1+1;
          if (zanyato1>m1) then
          begin
          zanyato1:=m1;
          ob1:=ob1-1;           otkaz:=otkaz+1;
           zanyato2:=zanyato2+x;            ob2:=ob2+1;
           if (zanyato2>m2) then
           begin
         zanyato2:=m2;       ob2:=ob2-1;
  end;  end;
 
  //sl:=random(3);
 //  if sl =1 then goto metka1
    //     else goto metka2;
 
 metka1:  for i:=1 to n1 do
begin
     if s1[1,i]>1 then
      begin
        s1[1,i]:=s1[1,i]-1;
        s1[2,i]:=0;
      end;
     if (s1[1,i]=1) and (zanyato1>=1) then
      begin
        s1[1,i]:=round((-60/lambda1)*ln(random));
        zanyato1:=zanyato1-1;
        s1[2,i]:=1;
      end;
     if (s1[1,i]=1) and (zanyato1=0) then
      begin
        s1[1,i]:=0;         s1[2,i]:=1;
      end;
     if (s1[1,i]=0) and (zanyato1>=1) then
      begin
        s1[1,i]:=round((-60/lambda1)*ln(random));
        zanyato1:=zanyato1-1;
        s1[2,i]:=0;
      end;
     if (s1[1,i]=0) and (zanyato1=0) then
      begin
        s1[1,i]:=0;         s1[2,i]:=0;
      end;     end;

   for i:=1 to n1 do
   begin
       zanyato2:= zanyato2+s1[2,i];
       pol_ob:=pol_ob+1;
     if zanyato2>m2 then
       begin
         zanyato2:=m2;          pol_ob:=pol_ob-1;
         proshli_1_fazu:=proshli_1_fazu+s1[2,i];
       end else
         zanyato2:=zanyato2+s1[2,i];
   end;
 
 metka2:  for i:=1 to n2 do
   begin
     if s2[1,i]>1 then
      begin
        s2[1,i]:=s2[1,i]-1;         s2[2,i]:=0;
      end;
     if (s2[1,i]=1) and (zanyato2>=1) then
      begin
        s2[1,i]:=round((-60/lambda2)*ln(random));
        zanyato2:=zanyato2-1;
        s2[2,i]:=1;
      end;
     if (s2[1,i]=1) and (zanyato2=0) then
      begin
        s2[1,i]:=0;         s2[2,i]:=1;
      end;
     if (s2[1,i]=0) and (zanyato2>=1) then
      begin
        s2[1,i]:=round((-60/lambda2)*ln(random));
        zanyato2:=zanyato2-1;
        s2[2,i]:=0;
      end;
     if (s2[1,i]=0) and (zanyato2=0) then
      begin
        s2[1,i]:=0;        s2[2,i]:=0;
      end;    end;
  for i:=1 to n2 do
 proshli_obe_fazi:=proshli_obe_fazi+s2[2,i];
 
end;
 ver_obsl_1fazi:=proshli_1_fazu/ob_kol_zayavok;       // вероятность обслуживания только первой фазой обслуживания
 ver_polnogo_obsl:=proshli_obe_fazi/ob_kol_zayavok;   //вероятность обслуживания на обеих фазах
 
StringGrid1.Cells[0, 0] := 'Определены параметры ';
StringGrid1.Cells[1, 0] := 'Значения ';
StringGrid1.Cells[0, 1] := 'Общее кол заявок ';
StringGrid1.Cells[0, 2] := 'Прошли только 1-фазу';
StringGrid1.Cells[0, 3] := 'Прошли полное обсл-е ';
StringGrid1.Cells[0, 4] := 'Вер обсл только 1-фазы ';
StringGrid1.Cells[0, 5] := 'Вер обсл на обеих фазах ';
StringGrid1.Cells[0, 6] := 'Вер обсл только 2 фазы ';
StringGrid1.Cells[0, 7] := 'Вер отказа ';
StringGrid1.Cells[1, 1] :=  inttostr(ob_kol_zayavok);
StringGrid1.Cells[1, 2] :=  inttostr(proshli_1_fazu);
StringGrid1.Cells[1, 3] :=  inttostr(proshli_obe_fazi);
StringGrid1.Cells[1, 4] := formatfloat('0.000',ver_obsl_1fazi);
StringGrid1.Cells[1, 5] :=  formatfloat('0.000',ver_polnogo_obsl);
StringGrid1.Cells[1, 6] :=  formatfloat('0.000',ob2/ob_kol_zayavok);
StringGrid1.Cells[1, 7] :=  formatfloat('0.000',otkaz/ob_kol_zayavok);
 
end;
 except
   end;
 
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Close;
end;
 
end.

Решение задачи: «Как перевести код с delphi на С#?»

textual
Листинг программы
var a : integer;
a := a + 1;

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


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

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

6   голосов , оценка 4.167 из 5
Похожие ответы