Навигация
Главная
Поиск
Форум
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
Подключение Mic... 65535
Создание потоко... 65535
Приложение «Про... 65535
Оператор выбора... 65535
Создание отчето... 65100
Модуль Forms 64873
Пример работы с... 63329
ТЕХНОЛОГИИ ДОСТ... 61569
Имитационное мо... 57436
Реклама
Сейчас на сайте
Гостей: 5
На сайте нет зарегистрированных пользователей

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

Медиа плейер на Delphi + Пояснительная записка
Меры близости на векторах в Delphi + Блок схемы
База данных студентов на Delphi + Microsoft SQL Server

Реклама



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

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
FilesInfo
БД студентов
Progressbar
Plasma
Самоучитель PHP 4
JanButtonsV
Архив значков
Файловый менеджер
Delphi 2005 для .NET
Запрет гостям ск...
Система баннеро...
PDJ Scrollers
Эффект лампы на р...
VFW
PHP в примерах
Введение в станда...
Прграммирование в...
Indy in Depth Глу...
UmEdit
Мод "проверочный ...

Топ загрузок
Приложение Клие... 100466
Delphi 7 Enterp... 86643
Converter AMR<-... 20077
GPSS World Stud... 12667
Borland C++Buil... 11760
Borland Delphi ... 8558
Turbo Pascal fo... 7037
Visual Studio 2... 4998
Калькулятор [Ис... 4760
FreeSMS v1.3.1 3541
Случайные статьи
Расположение загол...
Ошибка EOLESYS..OP...
Начало работы
Листинг 14.4. Доба...
4.3. Дополнительна...
Определить инициал...
Большие числа
Google
Вскрытие Xbox
Точки автофокусиро...
Программирование п...
Эталонная модель п...
Язык программирова...
10.5. Хорновские...
Организация ввода-...
Блок GATHER, MATCH
svc.cpp
Установка фотограф...
Асимметричная пере...
10.4. Методы умень...
Самообучение маршр...
Комплексные числа
Использование SD-карт
Ва-Банк - вот лучш...
Готовый стилевой файл
Статистика



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


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