Навигация
Главная
Поиск
Форум
FAQ's
Ссылки
Карта сайта
Чат программистов

Статьи
-Delphi
-C/C++
-Turbo Pascal
-Assembler
-Java/JS
-PHP
-Perl
-DHTML
-Prolog
-GPSS
-Сайтостроительство
-CMS: PHP Fusion
-Инвестирование

Файлы
-Для программистов
-Компонеты для Delphi
-Исходники на Delphi
-Исходники на C/C++
-Книги по Delphi
-Книги по С/С++
-Книги по JAVA/JS
-Книги по Basic/VB/.NET
-Книги по PHP/MySQL
-Книги по Assembler
-PHP Fusion MOD'ы
-by Kest
Professional Download System
Реклама
Услуги

Автоматическое добавление статей на сайты на Wordpress, Joomla, DLE
Заказать продвижение сайта
Программа для рисования блок-схем
Инженерный калькулятор онлайн
Таблица сложения онлайн
Популярные статьи
OpenGL и Delphi... 65535
Форум на вашем ... 65535
HACK F.A.Q 65535
Бип из системно... 65535
Гостевая книга ... 65535
Invision Power ... 65535
Пример работы с... 65535
Содержание сайт... 65535
Организация зап... 65535
Вызов хранимых ... 65535
Создание отчето... 65535
Программируемая... 65535
Эмулятор микроп... 65535
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Модуль Forms 65535
ТЕХНОЛОГИИ ДОСТ... 65300
Имитационное мо... 59116
Реклама
Сейчас на сайте
Гостей: 7
На сайте нет зарегистрированных пользователей

Пользователей: 13,104
новичок: oseose
Новости
Реклама
Выполняем курсовые и лабораторные по разным языкам программирования
Подробнее - курсовые и лабораторные на заказ
Delphi, Turbo Pascal, Assembler, C, C++, C#, Visual Basic, Java, GPSS, Prolog, 3D MAX, Компас 3D
Заказать программу для Windows Mobile, Symbian

Моделирование процесса обработки заданий пакетным режимом работы с квант...
Программа тестирования и обучающая программа по математике на Turbo Pasc...
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...

Реклама



Подписывайся на YouTube канал о программировании, что бы не пропустить новые видео!

ПОДПИСЫВАЙСЯ на канал о программировании
Моделирование аэропорта
Задание:
Самолеты прибывают для посадки в район крупибывший самолет получает разрешение на посадку.
Если полоса занята, самолет выполняет пного аэропорта каждые 10 ± 5 мин.
Если взлетно-посадочная полоса свободна, пролет по кругу и возвращается к аэропорту через каждые 4 мин.
Если после пятого круга самолет не получает разрешения на посадку, он отправляется на запасной аэродром.
В аэропорту через каждые 10 ± 2 мин к взлетно-посадочной полосе выруливают готовые к взлету машины и получают разрешение на взлет, если полоса свободна.
Для взлета и посадки самолеты занимают полосу ровно на 2 мин.
Если при свободной полосе одновременно один самолет прибывает для посадки, а другой – для взлета, полоса предоставляется взлетающей машине.
Смоделировать работу аэропорта в течение суток.
Подсчитать количество самолетов, которые взлетели, сели и были направлены на запасной аэродром.
Определить коэффициент загрузки взлетно-посадочной полосы.

Моделирование аэропорта

Исходный код программы для Delphi 7:
unit Unit1;
{
11.30 -
Самолеты прибывают для посадки в район крупибывший самолет получает разрешение на посадку.
Если полоса занята, самолет выполняет пного аэропорта каждые 10 ± 5 мин.
Если взлетно-посадочная полоса свободна, пролет по кругу и возвращается к аэропорту через каждые 4 мин.
Если после пятого круга самолет не получает разрешения на посадку, он отправляется на запасной аэродром.
В аэропорту через каждые 10 ± 2 мин к взлетно-посадочной полосе выруливают готовые к взлету машины и получают разрешение на взлет, если полоса свободна.
Для взлета и посадки самолеты занимают полосу ровно на 2 мин.
Если при свободной полосе одновременно один самолет прибывает для посадки, а другой – для взлета, полоса предоставляется взлетающей машине.
Смоделировать работу аэропорта в течение суток.
Подсчитать количество самолетов, которые взлетели, сели и были направлены на запасной аэродром.
Определить коэффициент загрузки взлетно-посадочной полосы.
}
interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Spin, Grids;

type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
StringGrid1: TStringGrid;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
end;


var
// 0 - ничего не произошло
// 1 - Cели
// 2 - Взлет
State:integer = 0; //Состояние линии
WaitTime:integer = 0; //Время занятости линии
TimeFly:integer = 0; //Общие время полета
Flys:array of integer; //список самолетов ожидающих посадку
Form1: TForm1;

implementation

uses Math;

{$R *.dfm}


// Симулирует работу второго аэропорта
procedure FirstSimulate( var Cup,Cdown:Integer);
begin
if State = 2 then //если сейчас длится взлет
begin
WaitTime:=WaitTime-1;
if WaitTime = 0 then //если время ожидания 0 значит взлет закончился
begin
State:=0;
inc(Cup); //ув. счетчик взлетевших самолетов
end;
end;
if State = 1 then //если посадка
begin
WaitTime:=WaitTime-1;
if WaitTime = 0 then
begin
State:=0;
inc(Cdown); //ув. счетчик севших самолетов
end;
end;
end;
// Симулирует работу запасного аэропорта
procedure LastSimulate( var Cdown,Cdenied:Integer);
var
i:integer; //переменная счетчик нужна для обхода массива Flys
begin
if State = 0 then //если линия свободна
for i:=0 to high(Flys) do //просмотр всех элементов массива Flys
if Flys[i] >0 then ///если есть самолет ожидающий посадку
begin
WaitTime:=2; //ставим время ожидания для посадки
TimeFly:=TimeFly + 2 + (20-Flys[i]); //считаем сколько времени летал самолет
Flys[i]:=-1; //убираем его из массива
inc(Cdown); //ув. счетчик севших самолетов
break;
end;
for i:=0 to high(Flys) do
if Flys[i] >= 0 then
begin
dec(Flys[i]);
if Flys[i] =0 then
begin
inc(Cdenied);//ув. счетчик на запасном самолетов на запасном аэропорте
TimeFly:=TimeFly + 20; // ув. время полета
end;
end;

end;
// операция посадки
procedure OperationDown;
var
len:integer;
begin
if State = 0 then
begin //свободна полоса, идет посадка
WaitTime:=2;
TimeFly:=TimeFly + 2;
State:=1;
end else
begin // добавка в список ожидающих самолетов посадки
for len:=0 to high(Flys) do
if Flys[len] <= 0 then
begin
Flys[len]:=5*4;
exit;
end;
len:=high(Flys)+2;
SetLength(Flys,len);
Flys[high(Flys)]:=5*4;
end;
end;
//операция взлета
procedure OperationUp;
begin
if State = 0 then // если полоса свободна делаем взлет
begin
WaitTime:=2;
TimeFly:=TimeFly + 2;
State:=2;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
time,t1,t2,t3:integer;
//взлетевшие самолеты, севшие самолеты, в запасном аэропорте
CountUp,CountDown,CountDenied:integer;
//количество за час, взлетвших,севших,и ушедших в запасной аэропорт самолетов
dUp,dDown,dDenied:integer;
begin
CountUp:=0; //обнуляем взлет. самолеты
CountDown:=0; //обнуляем севшие самолеты
CountDenied:=0; //..
TimeFly:=0;
dUp:=0;
dDown:=0;
dDenied:=0;
time:=0;
t1:=0; t2:=0; t3:=0;
//моделирование в течении суток 24*60 мин
while time <= 24*60 do
begin
if t1=0 then //пришло время взлетать
begin // up 10+-2
//генерируем след. время когда будет взлет
t1:=RandomRange(8,12); //8-12 частота взлета
OperationUp; //взлетаем
end;
if t2 = 0 then
begin // down 10+-5
//генерируем след. время когда будет посадка
t2:=RandomRange(5,15); //5-15 частота посадок
OperationDown; //садимся
end;
//моделируем основной аэропорт
FirstSimulate(CountUp,CountDown);
//моделируем дополнительный(сюда уходят самолеты которые не смогли сесть)
LastSimulate(CountDown,CountDenied);
//уменьшаем на 1 мин время через которое вроизойдет след. взлета/посадка
t1:=t1 - 1;
t2:=t2 - 1;
time:=time + 1; //ув. время моделировния на 1мин
if (time mod 60) = 0 then //если количество минут кратное 60мин то...
begin
// вывод на StringGrid1 (сетку) данных
StringGrid1.Cells[time div 60,0]:= IntToStr(time div 60);
StringGrid1.Cells[time div 60,1]:= IntToStr(CountUp - dUp);
StringGrid1.Cells[time div 60,2]:= IntToStr(CountDown - dDown);
StringGrid1.Cells[time div 60,3]:= IntToStr(CountDenied - dDenied);
if (CountDenied+CountDown-CountUp) >0 then
StringGrid1.Cells[time div 60,4]:= IntToStr(CountDenied+CountDown-CountUp)
else
StringGrid1.Cells[time div 60,4]:='0';
StringGrid1.Cells[time div 60,5]:= FloatToStr(( 60 - (TimeFly- t3))/60);
// запоминаем количество взлетевших, севших и тп.. самолетов
dUp:=CountUp;
dDown:=CountDown;
dDenied:=CountDenied;
t3:=TimeFly;
end;
end;
//очищаем массив Flys
SetLength(Flys,0);
//Очишаем Memo1
Memo1.Clear;
//выводим результат на Memo1
Memo1.Lines.Add('Количество взлетевших самолетов: '+IntToStr(CountUp)) ;
Memo1.Lines.Add('Количество севших самолетов: '+IntToStr(CountDown)) ;
Memo1.Lines.Add('Количество на запасном аэродроме самолетов: '+IntToStr(CountDenied)) ;
end;


procedure TForm1.FormCreate(Sender: TObject);
begin
//надписи на сетке
StringGrid1.Cells[0,0]:='Часы';
StringGrid1.Cells[0,1]:='Взлет';
StringGrid1.Cells[0,2]:='Посадка';
StringGrid1.Cells[0,3]:='В запас. аэро.';
StringGrid1.Cells[0,4]:='Кол. в воздухе';
StringGrid1.Cells[0,5]:='Загрузка';

end;

end.





Блок схемы:
FirstSimulate
FirstSimulate
LastSimulate
LastSimulate
OperationDown
OperationDown
OperationUp
OperationUp
TForm1.Button1Click
TForm1.Button1Click
Опубликовал Kest February 12 2011 13:47:50 · 0 Комментариев · 8337 Прочтений · Для печати

• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •


Комментарии
Нет комментариев.
Добавить комментарий
Имя:



smiley smiley smiley smiley smiley smiley smiley smiley smiley
Запретить смайлики в комментариях

Введите проверочный код:* =
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.
Гость
Имя

Пароль



Вы не зарегистрированны?
Нажмите здесь для регистрации.

Забыли пароль?
Запросите новый здесь.
Поделиться ссылкой
Фолловь меня в Твиттере! • Смотрите канал о путешествияхКак приготовить мидии в тайланде?
Загрузки
Новые загрузки
iChat v.7.0 Final...
iComm v.6.1 - выв...
Visual Studio 200...
CodeGear RAD Stud...
Шаблон для новост...

Случайные загрузки
Файловый менеджер
База каталогов ( ...
Java 2 - Эффектив...
IMtale
Последние загруж...
Керниган Б.В., Ри...
Программирование ...
AlignEdit
Delphi. Готовые а...
HtmlLerz PRO
Page Promoter 7.7...
EditButton
Работа с матрицами
Assembler. Практикум
ActiveX в Delphi
Панель случайной ...
Assistant
Секреты программи...
Delphi на примерах
Просмотр коммент...

Топ загрузок
Приложение Клие... 100505
Delphi 7 Enterp... 89568
Converter AMR<-... 20090
GPSS World Stud... 14465
Borland C++Buil... 12520
Borland Delphi ... 8879
Turbo Pascal fo... 7082
Калькулятор [Ис... 5061
Visual Studio 2... 5016
FreeSMS v1.3.1 3552
Случайные статьи
Объекты WordArt
Безопасное програм...
Дружественные клас...
Подготовка к хакингу
Алгоритм замены ст...
СМС бизнес от А до Я
Стандарты кодирования
Обзор панели управ...
Модификации с бесп...
Повторяющиеся дейс...
Службы поддержки
Элементы вектора
Решения к главе 9
Система оптимизаци...
Преобразование ука...
Медицинские негато...
Для тех у кого не ...
Реализация шаблоно...
Бизнес в Шотландии.
1.4. УСЛОВНЫЕ ОБОЗ...
пакетное задание
вопросами организа...
Microsoft Internet...
Сканирование фотог...
Стратегия обмена с...
Статистика



Друзья сайта
Программы, игры


Полезно
В какую объединенную сеть входит классовая сеть? Суммирование маршрутов Занимают ли таблицы память маршрутизатора?