Навигация
Главная
Поиск
Форум
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
ТЕХНОЛОГИИ ДОСТ... 62961
Имитационное мо... 58314
Реклама
Сейчас на сайте
Гостей: 8
На сайте нет зарегистрированных пользователей

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

Расчет обратной матрицы на Delphi + Пояснительная записка
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...
Моделирование работы узла коммутации сообщений на 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 Комментариев · 8236 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Run
SynEdit
ProLIB18
Win-Prolog 3.618
C++ : библиотека ...
PDJPack
DelTrayIcon [Исхо...
Искусство програм...
Введение в станда...
Tenis [Исходник н...
CaptionButton
Delphi 2005 Секре...
Pass [Исходник на...
Основы программир...
Технология .Net в VB
Интерактивный инт...
Пример OpenGL гра...
SUIPack
45 уроков по дельфи
Ehlib

Топ загрузок
Приложение Клие... 100477
Delphi 7 Enterp... 87844
Converter AMR<-... 20082
GPSS World Stud... 13468
Borland C++Buil... 12050
Borland Delphi ... 8667
Turbo Pascal fo... 7048
Visual Studio 2... 5005
Калькулятор [Ис... 4905
FreeSMS v1.3.1 3545
Случайные статьи
Создание приложения
Управление целостн...
Модуль IFrame. Мод...
Кодирование инстру...
Подсчет атомов и ч...
LOCATE (ОПРЕДЕЛИТЬ)
Зашита обмена данн...
Множество данных м...
Проблемы быстродей...
Программы для Винд...
Интерактивные зака...
Бесплатная раскрут...
Статические маршру...
Операторов typedef
Программа подписыв...
Просмотр данных ни...
Определение параме...
ZCE:личные впечатл...
фальсифицированным...
Использование созд...
INFORMATION_SCHEMA
БЛОКИ
Генерация исключений
Процедура GetLineS...
Практическая реали...
Статистика



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


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