Навигация
Главная
Поиск
Форум
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
Создание отчето... 63862
Модуль Forms 63615
ТЕХНОЛОГИИ ДОСТ... 60457
Пример работы с... 59754
Имитационное мо... 55919
Реклама
Сейчас на сайте
Гостей: 40
На сайте нет зарегистрированных пользователей

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

Моделирование процесса передачи данных по магистрали с основным и резерв...
База данных - рабочее место кассира на Delphi + бд Access
Обратное размещение элементов ЭВС на Delphi + Пояснительная записка

Реклама



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

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


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



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

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

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

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

Пароль



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

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

Случайные загрузки
База данных: Книж...
Averaging [Исходн...
Dealer
EMSQuickImport
IpEditAdress
Игра PackMan
RAS
Введение в станда...
Handles
Определние размер...
Как программирова...
Язык программиров...
WAP версия сайта
Самоучитель PHP 5...
Последнее загруж...
Cтатьи Королевств...
Borland Delphi 6....
Генетический алго...
Обучение Borland ...
WebReg v1.3

Топ загрузок
Приложение Клие... 100447
Delphi 7 Enterp... 85785
Converter AMR<-... 20067
GPSS World Stud... 12518
Borland C++Buil... 11570
Borland Delphi ... 8503
Turbo Pascal fo... 7023
Visual Studio 2... 4989
Калькулятор [Ис... 4739
FreeSMS v1.3.1 3535
Случайные статьи
Задание выражений ...
Глава 15. Страт...
Окончание игры и п...
Для добавления кол...
Зашли в тупик?
может быть установ...
3.2. Списки
Текст в ячейках та...
Некоторые выводы в...
Подробнее об экспо...
Ван Вайк решил про...
HTPC под Windows
СТАНДАРТНЫЕ ЧИСЛОВ...
Пакет обновления д...
Глава 22. Роли ...
Перегрузка операци...
Используйте (ГАК д...
Правила определени...
Пример сеанса рабо...
Обнаружение датчиков
Параметры обновления
Моделирование элек...
Встроенные элементы
Отправлено байт (B...
Концепция с исполь...
Статистика



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


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