Перевод кода из Delphi в Pascal
Формулировка задачи:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Button1: TButton; Button2: TButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Label15: TLabel; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; const n = 5; {kolichestvo stantsii} var Form1: TForm1; rg:real; {opytnaya nagruzka} s:real; {opytnaya proizvoditel'nost'} p:real; {veroyatnost' prohozhdeniya kadra} rp:real; {opytnaya veroyatnost' prohozhdeniya kadra} i:integer; {schetchik kollizii(neproshedshih kadrov)} j:integer; {schetchik uspeshno proshedshih kadrov} k:integer; {peremennaya "proverki prohoda kadrov" } l:integer; {kolichestvo kadrov v nabore} g:real; {normirovannaya propuschennaya nagruzka} r:integer; {dlitel'nost' kadra} bool:boolean; {flag sostoyaniya} implementation {$R *.dfm} procedure aloxa; {protsedura ALOHA} begin i:=0; j:=0; for k:= 1 to l do {nachalo proverki prohoda kadrov} begin bool:=false;{esli false to paket ne proshel} while bool=false do {poka bool=false do...} begin rp:=(random(100)+1)/100;{opytnaya veroyatnost' prohozhdeniya kadra - sluchainym obrazom generiruetsya} if (rp<=p) then {esli opytnaya veroyatnost' prohozhdeniya kadra <= veroyatnost' prohozhdeniya kadra} begin bool:=true;{...bool:=true;} inc(j);{schitaet kolichestvo uspeshno proshedshih paketov} end else inc(i);{kolichestvo neproshedshih paketov} end; end; end; procedure TForm1.Button1Click(Sender: TObject); begin randomize;{generator sluchainyh chisl} if edit1.Text <> '' then g:=StrToFloat(Edit1.Text); if edit2.Text <> '' then r:=StrToInt(Edit2.Text); if edit3.Text <> '' then l:=StrToInt(Edit3.Text); p:=exp(-2*G);{veroyatnost' prohozhdeniya kadra} aloxa; rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki} s:=rg*exp(-2*rg); {opytnoe znachenie proizvoditel'nosti} label5.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p); label6.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s); label7.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i); label8.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r); label9.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l); p:=exp(-G); aloxa; rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki} s:=rg*exp(-rg); {opytnoe znachenie proizvoditel'nosti} label11.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p); label12.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s); label13.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i); label14.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r); label15.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l); end; procedure TForm1.Button3Click(Sender: TObject); begin close; end; procedure TForm1.Button2Click(Sender: TObject); begin edit1.Text:=''; edit2.Text:=''; edit3.Text:=''; label5.Caption:=''; label6.Caption:=''; label7.Caption:=''; label8.Caption:=''; label9.Caption:=''; label11.Caption:=''; label12.Caption:=''; label13.Caption:=''; label14.Caption:=''; label15.Caption:=''; end; end.
Решение задачи: «Перевод кода из Delphi в Pascal»
const n=5; {количество станций} procedure aloha(g: Real; r, l: Integer); {процедура ALOHA} var i, j, k: Integer; rg, p: Real; begin for m:=2 downto 1 do begin i:=0; {счетчик коллизий} p:=Exp(-m*g); {вероятность прохождения кадра} for k:=1 to l do repeat if Random>p then Inc(i) else Break; until False; rg:=(l+i)*n/r/l; {опытное значение нормированной пропущенной нагрузки} WriteLn('Теоретическое значение производительности: ',g*p); WriteLn('Опытное значение производительности: ',rg*exp(-m*rg)); WriteLn('Количество коллизий на ',l,' пакетов: ',i); WriteLn('Общее время передачи кадров: ',(l+i)*r); WriteLn('Время передачи одного кадра: ',(l+i)*r/l); end; end; var g: Real; {нормированная пропущенная нагрузка} r: Integer; {длительность кадра} l: Integer; {количество кадров в наборе} begin Randomize; Write('g r l: '); ReadLn(g,r,l); aloha(g,r,l); end.
Объяснение кода листинга программы
const n = 5; {количество станций} procedure aloha(g: Real; r, l: Integer); {процедура ALOHA} var i, j, k: Integer; rg, p: Real; begin for m := 2 downto 1 do begin i := 0; {счетчик коллизий} p := Exp(-m g); {вероятность прохождения кадра} for k := 1 to l do repeat if Random > p then Inc(i) else Break; until False; rg := (l + i) n / r / l; {опытное значение нормированной пропущенной нагрузки} WriteLn('Теоретическое значение производительности: ', g p); WriteLn('Опытное значение производительности: ', rg Exp(-m rg)); WriteLn('Количество коллизий на ', l, ' пакетов: ', i); WriteLn('Общее время передачи кадров: ', (l + i) r); WriteLn('Время передачи одного кадра: ', (l + i) * r / l); end; end; var g: Real; {нормированная пропущенная нагрузка} r: Integer; {длительность кадра} l: Integer; {количество кадров в наборе} begin Randomize; Write('g r l: '); ReadLn(g, r, l); aloha(g, r, l); end.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д