Перевод кода из Delphi в Pascal

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

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

нужно перевести код в 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»

textual
Листинг программы
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.

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


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

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

9   голосов , оценка 4 из 5