Основные переменные, константы и типы модуля
int timeAll –количество тактов.
double potokS – плотность прилета самолетов.
double timeOne – среднее время работы над одним самолетом.
double timeWait – среднее время ожидания дозаправки.
int s1,s2,s3,s4 – перменные используемые для проверки занятости дозаправщиков.
int timeWork1,2,3,4 – используются для выражения времени работы дозаправшиков 1,2,3 и 4.
Отладка и тестирование программного продукта
В ходе отладки и тестирования программы осуществлялся ввод входных данных различного диапазона. Правильность выдаваемых данных, их адекватность и соответствие требуемым условиям.
Далее показаны снимки программы на различных этапах, с различными исходными данными.
Исходное состояние окна показано на рисунке 8:

Рис. 8
Результат в течении 8 часов представлен на рисунке 9:

Рис. 9
На рисунке 10 показан результат в течении 24 часов:

Рис. 10
Окно программы с предупреждением о невозможности анализа с нулевым начальным средним веременм обслуживания
Руководство пользователю
Разрабатываемая программа предназначена для моделированя работы дозаправщиков в воздухе в течении нескольких часов и нахождение требуемой статистики.
Входными данными программы являются среднее время дозаправки одного самолета, среднее время прилета следующего клиента, среднее время ожидания дозаправки, время работы дозаправщиков.
К выходным данным относятся вычисление различных вероятностей и расчет статистических данных выводимх на экран в виде текста.
После ввода всех значений можно провести моделирования, нажав клавижу «Начать».
ПРИЛОЖЕНИЕ: Листинг программы
//==============
#include <vcl.h>
#include <cstdlib>
#include <iostream>
#include <vector>
#include <math.h>
using namespace std;
#pragma hdrstop
#include "Unit1.h"
#include "Unit3.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button2Click(TObject *Sender)
{
Form2->Visible = false;
Form1->Visible = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm2::Button1Click(TObject *Sender)
{
srand ( time(NULL) );
vector <int> ocher;
int N;
N = StrToInt(Edit4->Text);
int timeAll=( (N*60) ), taktAll=N*60;
int PlaneNew = 0, timeLast = 0, s1 = 0, s2 = 0, s3 = 0, s4 = 0, i=0, timeNext = 0;
int timeWork1 = 0, timeWork2 = 0, timeWork3 = 0, timeWork4 = 0, planeTime = 0;
double randNext = 0, planeWait = 0, potokS = 0.4, timeOne = 0.17, timeWait = 0.333;
int PlaneIn = 0, PlaneMiss = 0, PlaneApply = 0, vsego=0, statOcher2 = 0, statTime2 = 0;
double statApply = 0, statApply1 = 0, statApply2 = 0, statOcher1 = 0, statOcher4 = 0, statOcher3 = 0, statTime1 = 0, statTime88 = 0;
for( ; timeAll > 0; timeAll-- )
{
if ( timeLast == 0 )
{
vsego++;
PlaneIn++;
PlaneNew = 1;
randNext = 1 + rand()%99;
randNext = randNext/100;
timeNext = (-1/potokS)*log(randNext);
if (timeNext==0) timeNext=2;
timeLast = timeNext;
}
if(PlaneNew == 1)
{
planeWait = 1 + rand()%99;
planeWait = planeWait/100;
planeTime = (-1/timeWait)*log(planeWait);
if (planeTime==0) planeTime=2;
statTime2 = planeTime + statTime2;
ocher.push_back(planeTime);
if ( s1 == 0 || s2 == 0 || s3 == 0 || s4 == 0 )
{
for(i=0; i<ocher.size(); i++)
{
if (ocher[i]>0)
{
ocher[i]=-2;
break;
}
}
if( s1==0 )
{
randNext = 1 + rand()%99;
randNext = randNext/100;
timeWork1 = (-1/timeOne)*log(randNext);
s1++;
}
else
if( s2==0 )
{
randNext = 1 + rand()%99;
randNext = randNext/100;
timeWork2 = (-1/timeOne)*log(randNext);
s2++;
}
else
if( s3==0 )
{
randNext = 1 + rand()%99;
randNext = randNext/100;
timeWork3 = (-1/timeOne)*log(randNext);
s3++;
}
else
if( s4==0 )
{
randNext = 1 + rand()%99;
randNext = randNext/100;
timeWork4 = (-1/timeOne)*log(randNext);
s4++;
}
//---------------
}
}
if( s1==1&&timeWork1>0 ) timeWork1--;
if( s1==1&&timeWork1==0 )
{
s1--;
PlaneApply++;
PlaneIn--;
}
if( s2==1&&timeWork2>0 ) timeWork2--;
if( s2==1&&timeWork2==0 )
{
s2--;
PlaneApply++;
PlaneIn--;
}
if( s3==1&&timeWork3>0) timeWork3--;
if( s3==1&&timeWork3==0 )
{
s3--;
PlaneApply++;
PlaneIn--;
}
if( s4==1&&timeWork4>0) timeWork4--;
if( s4==1&&timeWork4==0 )
{
s4--;
PlaneApply++;
PlaneIn--;
}
timeLast--;
for(i=0; i<ocher.size(); i++)
{
if (ocher[i]>=0) ocher[i]--;
if (ocher[i]==(-1))
{
PlaneMiss++;
ocher[i]--;
PlaneIn--;
}
}
PlaneNew = 0;
for(i=0; i<ocher.size(); i++)
{
if (ocher[i]>=0) statOcher2++;
}
}
if(PlaneIn != 0) PlaneMiss = PlaneMiss+PlaneIn;
statApply1 = PlaneApply;
statApply2 = vsego;
statApply = statApply1/statApply2;
statOcher3 = statOcher2;
statOcher4 = taktAll;
statOcher1 = statOcher3/statOcher4;
statTime88 = statTime2;
statTime1 = statTime88/statOcher4;
String count;
String count2;
String count3;
String count4;
String count5;
String count6;
count=FloatToStr(PlaneApply);
count2=FloatToStr(statApply);
count6=FloatToStr(PlaneMiss);
count4=FloatToStr(statOcher1);
count5=FloatToStr(statTime1);
Edit1->Text=count5;
Edit2->Text=count1;
Edit3->Text=count6;
Edit4->Text=count2;
Edit5->Text=count3;
}
//---------------------------------------------------------------------------
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. И.В.Зотов, Э.И.Ватутин, Д.Б.Борзов “Процедурно – ориентированное программирование на С++”, Курск 2008
2. Г. Шилдт <<C++ Шаг за шагом>> 621 c.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2025 stydopedia.ru Все материалы защищены законодательством РФ.
|