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

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

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

нужно перевести код в pascal :
Листинг программы
  1. unit Unit1;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, StdCtrls;
  6. type
  7. TForm1 = class(TForm)
  8. Label1: TLabel;
  9. Label2: TLabel;
  10. Label3: TLabel;
  11. Edit1: TEdit;
  12. Edit2: TEdit;
  13. Edit3: TEdit;
  14. Button1: TButton;
  15. Button2: TButton;
  16. Label4: TLabel;
  17. Label5: TLabel;
  18. Label6: TLabel;
  19. Label7: TLabel;
  20. Label8: TLabel;
  21. Label9: TLabel;
  22. Label10: TLabel;
  23. Label11: TLabel;
  24. Label12: TLabel;
  25. Label13: TLabel;
  26. Label14: TLabel;
  27. Label15: TLabel;
  28. Button3: TButton;
  29. procedure Button1Click(Sender: TObject);
  30. procedure Button3Click(Sender: TObject);
  31. procedure Button2Click(Sender: TObject);
  32. private
  33. { Private declarations }
  34. public
  35. { Public declarations }
  36. end;
  37. const
  38. n = 5; {kolichestvo stantsii}
  39. var
  40. Form1: TForm1;
  41. rg:real; {opytnaya nagruzka}
  42. s:real; {opytnaya proizvoditel'nost'}
  43. p:real; {veroyatnost' prohozhdeniya kadra}
  44. rp:real; {opytnaya veroyatnost' prohozhdeniya kadra}
  45. i:integer; {schetchik kollizii(neproshedshih kadrov)}
  46. j:integer; {schetchik uspeshno proshedshih kadrov}
  47. k:integer; {peremennaya "proverki prohoda kadrov" }
  48. l:integer; {kolichestvo kadrov v nabore}
  49. g:real; {normirovannaya propuschennaya nagruzka}
  50. r:integer; {dlitel'nost' kadra}
  51. bool:boolean; {flag sostoyaniya}
  52. implementation
  53. {$R *.dfm}
  54. procedure aloxa; {protsedura ALOHA}
  55. begin
  56. i:=0;
  57. j:=0;
  58. for k:= 1 to l do {nachalo proverki prohoda kadrov}
  59. begin
  60. bool:=false;{esli false to paket ne proshel}
  61. while bool=false do {poka bool=false do...}
  62. begin
  63. rp:=(random(100)+1)/100;{opytnaya veroyatnost' prohozhdeniya kadra - sluchainym obrazom generiruetsya}
  64. if (rp<=p) then {esli opytnaya veroyatnost' prohozhdeniya kadra <= veroyatnost' prohozhdeniya kadra}
  65. begin
  66. bool:=true;{...bool:=true;}
  67. inc(j);{schitaet kolichestvo uspeshno proshedshih paketov}
  68. end
  69. else inc(i);{kolichestvo neproshedshih paketov}
  70. end;
  71. end;
  72. end;
  73. procedure TForm1.Button1Click(Sender: TObject);
  74. begin
  75. randomize;{generator sluchainyh chisl}
  76. if edit1.Text <> '' then
  77. g:=StrToFloat(Edit1.Text);
  78. if edit2.Text <> '' then
  79. r:=StrToInt(Edit2.Text);
  80. if edit3.Text <> '' then
  81. l:=StrToInt(Edit3.Text);
  82. p:=exp(-2*G);{veroyatnost' prohozhdeniya kadra}
  83. aloxa;
  84. rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki}
  85. s:=rg*exp(-2*rg); {opytnoe znachenie proizvoditel'nosti}
  86. label5.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p);
  87. label6.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s);
  88. label7.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i);
  89. label8.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r);
  90. label9.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l);
  91. p:=exp(-G);
  92. aloxa;
  93. rg:=((j+i)*n*1/r)/l; {opytnoe znachenie normirovannoi propuschennoi nagruzki}
  94. s:=rg*exp(-rg); {opytnoe znachenie proizvoditel'nosti}
  95. label11.Caption:='Teoreticheskoe znachenie proizvoditelnosti '+FloattoStr(g*p);
  96. label12.Caption:='Opytnoe znachenie proizvoditelnosti '+FloatToStr(s);
  97. label13.Caption:='Kolichestvo kollizii na '+floattostr(l)+' paketov '+floattostr(i);
  98. label14.Caption:='Obschee vremya peredachi kadrov '+floattostr((j+i)*r);
  99. label15.Caption:='Vremya peredachi odnogo kadra '+floattostr((j+i)*r/l);
  100. end;
  101. procedure TForm1.Button3Click(Sender: TObject);
  102. begin
  103. close;
  104. end;
  105. procedure TForm1.Button2Click(Sender: TObject);
  106. begin
  107. edit1.Text:='';
  108. edit2.Text:='';
  109. edit3.Text:='';
  110. label5.Caption:='';
  111. label6.Caption:='';
  112. label7.Caption:='';
  113. label8.Caption:='';
  114. label9.Caption:='';
  115. label11.Caption:='';
  116. label12.Caption:='';
  117. label13.Caption:='';
  118. label14.Caption:='';
  119. label15.Caption:='';
  120. end;
  121. end.
Подскажите, пожалуйста, как

Решение задачи: «Перевод кода из Delphi в Pascal»

textual
Листинг программы
  1. const n=5; {количество станций}
  2. procedure aloha(g: Real; r, l: Integer); {процедура ALOHA}
  3. var i, j, k: Integer; rg, p: Real;
  4. begin
  5.   for m:=2 downto 1 do begin
  6.     i:=0; {счетчик коллизий} p:=Exp(-m*g); {вероятность прохождения кадра}
  7.     for k:=1 to l do
  8.       repeat
  9.         if Random>p then Inc(i) else Break;
  10.       until False;
  11.     rg:=(l+i)*n/r/l; {опытное значение нормированной пропущенной нагрузки}
  12.     WriteLn('Теоретическое значение производительности: ',g*p);
  13.     WriteLn('Опытное значение производительности: ',rg*exp(-m*rg));
  14.     WriteLn('Количество коллизий на ',l,' пакетов: ',i);
  15.     WriteLn('Общее время передачи кадров: ',(l+i)*r);
  16.     WriteLn('Время передачи одного кадра: ',(l+i)*r/l);  
  17.   end;
  18. end;
  19. var
  20.   g: Real;    {нормированная пропущенная нагрузка}
  21.   r: Integer; {длительность кадра}
  22.   l: Integer; {количество кадров в наборе}
  23. begin
  24.   Randomize; Write('g r l: '); ReadLn(g,r,l); aloha(g,r,l);
  25. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут