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

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

Создание последовательности окон и передвижение окон по экрану на Turbo ...
моделирование процесса поступления заявок в ЭВМ на GPSS + Пояснительная ...
Лабораторная работа по динамическим спискам на Turbo Pascal (удаление ду...

Реклама



Подписывайся на 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 Комментариев · 8203 Прочтений · Для печати

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
Image Browser [Ис...
FreeNet
Text effect
Основы Delphi
Профессиональное ...
Counter [Исходник...
Модифицированная ...
Delphi и технолог...
Handles
С/C++ Программиро...
Дешифратор содерж...
AlignEdit
CwstatusBar
Delphi 6. Учебный...
Visual Studio 200...
Turbo Pascal for ...
Binary2XMLDemo (Р...
Доступа к БД Fire...
ScreenSaver [Исхо...
PHP/MySQL для нач...

Топ загрузок
Приложение Клие... 100471
Delphi 7 Enterp... 87433
Converter AMR<-... 20080
GPSS World Stud... 13063
Borland C++Buil... 11922
Borland Delphi ... 8631
Turbo Pascal fo... 7041
Visual Studio 2... 5000
Калькулятор [Ис... 4853
FreeSMS v1.3.1 3543
Случайные статьи
Установка и удален...
Команда DIV
Тестирование прово...
Интегрирование нов...
Если протокол не в...
Форма кучи
Прием находится в ...
Фирма Adobe
Процесс - лидер гр...
Подводные камни вн...
Резервная копия
Хэш-функция
Ограниченные типы
Too many symbols
7.5. Принципы
Принципы организац...
Где колесные опоры...
СПИСКИ В GPSS
Комбинирование соб...
Идентификация объе...
Acompli и почта
Система после упло...
Модуль CRT. Раблта...
Постообработка. пр...
Нерегулярные массивы
Статистика



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


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