Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Курсовой проект [25] / Unit1
.cpp//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
#include "Unit3.h"
#include "Unit4.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include "math.h";
TForm1 *Form1;
struct room
{
int work, print, start;
bool w,p;
room *next;
};
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
int N=Form2->n->Text.ToInt(), next=Form2->next->Text.ToInt(), next_int=Form2->next_int->Text.ToInt(), work=Form2->work->Text.ToInt(), work_int=Form2->work_int->Text.ToInt(), print=Form2->print->Text.ToInt(), print_int=Form2->print_int->Text.ToInt(),stack=Form2->stack->Text.ToInt();
int time=0,i=0;
int next_go=0,free=stack,gap=0,exe=0;
double och=0,zagr_p=0,zagr_c=0;
room *st,*st0,*beg;
randomize();
st0=beg->next=beg=new room;
beg->p=false;
Memo1->Lines->Clear();
do
{
if(beg->p)
{
if(time>=beg->print+beg->start)
{
beg->p=false;
free++;
exe++;
}
zagr_p++;
}
if(beg->next!=beg)
{
st=beg->next;
if(st->w)
{
zagr_c++;
if(time>=st->work+st->start)
{
if((exe+1)%3==0)
{
beg->p=true;
beg->print=print-print_int+rand()%(2*print_int);
beg->start=time;
}
else
{
beg->p=false;
free++;
exe++;
}
beg->next=st->next;
delete st;
st=beg->next;
st->w=true;
st->start=time;
st->work=work-work_int+rand()%(2*work_int);
}
}
else
{
st->w=true;
st->start=time;
st->work=work-work_int+rand()%(2*work_int);
}
}
if(next_go<=time)
{
if(free>0 && i<N)
{
st=new room;
st->next=beg;
st0->next=st;
st0=st;
if(time==0)
{
st->work=work-work_int+rand()%(2*work_int);
st->w=true;
}
free--;
i++;
}
else
{
gap++;
}
next_go=time+next-next_int+rand()%(2*next_int);
}
time++;
och+=stack-free;
}
while((exe<N) && (time<10000));
delete beg,st0,st;
och=floor(och/time);
zagr_p=floor(100*zagr_p/time);
zagr_c=floor(100*zagr_c/time);
Memo1->Lines->Add(AnsiString()+"Время моделирования:"+time);
Memo1->Lines->Add(AnsiString()+"Не нашли место в очереди:"+gap);
Memo1->Lines->Add(AnsiString()+"Среднее число в очереди:"+och);
Memo1->Lines->Add(AnsiString()+"Загрузка принтера:"+zagr_p+"%");
Memo1->Lines->Add(AnsiString()+"Загрузка компьютера:"+zagr_c+"%");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N7Click(TObject *Sender)
{
Form2->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
AboutBox->Show();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Q1Click(TObject *Sender)
{
AboutBox1->Show();
}
//---------------------------------------------------------------------------
Соседние файлы в папке Курсовой проект [25]