Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
02.05.2014
Размер:
5.78 Кб
Скачать
//---------------------------------------------------------------------------

#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]
  • #
    02.05.20144.31 Кб15Project1.bpr
  • #
    02.05.20141.39 Кб13Project1.cpp
  • #
    02.05.201418.35 Кб11Project1.obj
  • #
    02.05.2014876 б11Project1.res
  • #
    02.05.20142.03 Mб11Project1.tds
  • #
    02.05.20145.78 Кб13Unit1.cpp
  • #
    02.05.201451 б11Unit1.ddp
  • #
    02.05.201463.89 Кб11Unit1.dfm
  • #
    02.05.20141.48 Кб13Unit1.h
  • #
    02.05.201451.12 Кб11Unit1.obj
  • #
    02.05.2014891 б11Unit2.cpp