Как перевести код с 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;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д