IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Курсовая по паскалю, помогите пожалуйста!, Модель бензоколонки с однородными заявками
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 1
Пол: Мужской

Репутация: -  0  +


Мне нужно сделать "Модель бензоколонки с однородными заявками", посмотрите пожалуйста вот этот код, он почему-то не работает..

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus;
const
MaxK=100; {максимально возможное число колонок}
M=30; {количеств
,о машин для тестирования}
type
Tbenzokolonka = class(TForm)
Label1: TLabel;
sec: TEdit;
Button1: TButton;
Panel1: TPanel;
infa: TLabel;
infa1: TLabel;
MainMenu1: TMainMenu;
N1: TMenuItem;
procedure Button1Click(Sender: TObject);
procedure secChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
benzokolonka: Tbenzokolonka;
S:integer; {время обслуживания одной машины}
Period:integer;{промежуток времени между прибытием машин для генерации случайных чисел}
Periods: array[1..M] of integer;{массив с промежутками времени между прибытием машин}
{колонки}
K:integer; {количество колонок на станции}
BusyK:array[1..MaxK] of integer;{массив с временем окончания обслуживания всех машин на заправке}
{очередь} Queue:integer; {длинна очереди }

tmp:integer;
i,j:integer; {счётчики}
MaxQue:integer; {максимальная длинна очереди для данного числа колонок}
NextArrive:integer; {период до прибытия очередной машины}
VirTime:integer; {текущее время}
implementation

uses Unit2;
{колонки}
{функция постановки на обслуживание}
Function ServCar(Now:integer):boolean; {Now-время постановки на обслуживание}
var
i:integer;
begin
{проверим, не пора ли освободить колонки}
for i:=1 to K do
if BusyK[i] <> 0 then {если колонка занята}
if BusyK[i] < Now then {если время обслуживания закончилось}
BusyK[i]:=0; {пометим колонку как свободную}
{пробуем поставить машину на обслуживание}
i:=0;
repeat
i:=i+1;
until (i=K) Or (BusyK[i] = 0) ;
if BusyK[i] = 0 then {если колонка свободна}
begin
BusyK[i]:=Now+S; {запомним время освобождения колонки}
ServCar:=True; {машина обслуживается}
tmp:=tmp+1;
end
else
ServCar:=False; {нельзя обслужить машину}
end;
{очередь}
Procedure AddCar(Qua:integer); {ставим в очередь Qua машин}
begin
Queue:=Queue+1;
end;
Procedure RemoveCar(Qua:integer); {забираем из очереди Qua машин}
begin
Queue:=Queue-1;
end;
Function QueueLen:integer; {длинна очереди}
begin
QueueLen:=Queue;
end;

{$R *.dfm}

procedure Tbenzokolonka.Button1Click(Sender: TObject);
begin
S:=strtoint(sec.Text); {время обслуживания одной машины на заправке}
Period:=70; {максимальное время между прибытием машин}
for j:=1 to M do
Periods[j]:= Random(Period); {заполним массив прибытия машин промежутками времени для M машин}
for i:=1 to MaxK do {тестируем модель для различного числа колонок}
begin
tmp:=0;
K:=i;
Queue:=0;
VirTime:=0;
MaxQue:=0;
for j:=1 to M do {освободим все колонки перед очередным опытом}
BusyK[j]:=0;
for j:=1 to M do {перебираем все прибывающие машины}
begin
NextArrive:=Periods[j];
while NextArrive > 0 do
begin
if QueueLen > 0 then {если очередь есть}
if ServCar(VirTime) then RemoveCar(1); {если ставим машину на обслуживаение, уменьшаем очередь на 1}
NextArrive:=NextArrive-1;
VirTime:=VirTime+1; {ещё прошла еденица времени}
end; {while NextArrive <> 0 do}
if not ServCar(VirTime) then AddCar(1); {если не ставим машину на обслуживаение, увеличиваем очередь на 1}
if MaxQue < QueueLen then MaxQue:=QueueLen; {запомним максимальную длинну очереди}
end; {for j:=1 to M do}
{writeln('que: ',MaxQue,' colon: ',i,' tmp= ',tmp);}
if MaxQue = 0 then {если очередь отсутствовала}
begin
infa.Caption:='Время обслуживания S: ' + inttostr(S);
infa1.Caption:='Число колонок, при которых очередь не увеличивается: ' + inttostr(Random(20));
end;
end;

end;

procedure Tbenzokolonka.secChange(Sender: TObject);
begin
if sec.Text='' then
button1.Enabled:=false else
button1.Enabled:=true;
end;

procedure Tbenzokolonka.FormCreate(Sender: TObject);
begin
Randomize;
end;

procedure Tbenzokolonka.N1Click(Sender: TObject);
begin
dialogss.ShowModal;
end;

end.


Сообщение отредактировано: APAL -


Прикрепленные файлы
Прикрепленный файл  kyrs.txt ( 4.41 килобайт ) Кол-во скачиваний: 285
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 9.09.2025 2:58
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name