返回顶部

收藏

医疗过程模拟程序

更多
#include <cstdlib>
#include <iostream>
#include <ctime>
#include "windows.h"

#define LIST_LEN 10240
//#include "red_pokazivac.h"
#include "red_polje.h"

using namespace std;

int sim_len = 333;
clock_t vrijeme;

_red *pacijenti_x;
_red *pacijenti_1;
_red *pacijenti_2;
_red *pacijenti_3;
_red *pacijenti_4;

void generiranje()
{
    srand(time(0));
    int n;
    cout<<"> Koliko parova zelite generirati? (Max "<< LIST_LEN <<")\t";
    cin>>n;
    _pacijent novi;
    for(int i=0; i<n; i++)
    {
        novi.broj=i+1;
        novi.cekaonica=rand()%30+1;
        novi.ordinacija=rand()%15+1;
        novi.prioritet=rand()%4+1;
        EnQueueQ(novi,pacijenti_x);
        switch(novi.prioritet)
        {
            case 1:
               EnQueueQ(novi,pacijenti_1);
               break;
            case 2:
               EnQueueQ(novi,pacijenti_2);
               break;
            case 3:
               EnQueueQ(novi,pacijenti_3);
               break;
            case 4:
               EnQueueQ(novi,pacijenti_4);
        }
    }
};

void ispis(_pacijent trenutni)
{
    cout<<endl
        <<"Ulazi pacijent #"<<trenutni.broj<<"\tPrioritet: "<<trenutni.prioritet<<endl
        <<"> Ceka";
    for(int j=0; j<trenutni.cekaonica; j++)
    {
        Sleep(sim_len);
        cout<<".";
    }
    cout<<endl<<"    Proteklo "<<trenutni.cekaonica<<" min"<<endl;
    cout<<"> U ordinaciji";
    for(int j=0; j<trenutni.ordinacija; j++)
    {
        Sleep(sim_len);
        cout<<".";
    }
    cout<<endl<<"    Proteklo "<<trenutni.ordinacija<<" min"<<endl
        <<"------------------------------------------"<<endl;
}

void stanje(bool prioriteti = true)
{
    _pacijent pacijenti[LIST_LEN];
    int brojac=0;
    if(!prioriteti)
    {
        cout<<"Stanje reda:"<<endl;
        while(!IsEmptyQ(pacijenti_x))
        {
            pacijenti[brojac]=FrontQ(pacijenti_x);
            cout<<"* Pacijent #"<<pacijenti[brojac].broj
                <<"\tCeka: "<<pacijenti[brojac].cekaonica<<"min"
                <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
            DeQueueQ(pacijenti_x);
            brojac++;
        }
        for(int i=0;i<brojac;i++)
            EnQueueQ(pacijenti[i],pacijenti_x);
    }
    else
    {
        cout<<"Stanje reda:"<<endl;
        while(!IsEmptyQ(pacijenti_1))
        {
            pacijenti[brojac]=FrontQ(pacijenti_1);
            cout<<"* Pacijent #"<<pacijenti[brojac].broj
                <<"\tPrioritet: "<<pacijenti[brojac].prioritet
                <<"  Ceka: "<<pacijenti[brojac].cekaonica<<"min"
                <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
            DeQueueQ(pacijenti_1);
            brojac++;
        }
        for(int i=0;i<brojac;i++)
            EnQueueQ(pacijenti[i],pacijenti_1);

        brojac=0;
        while(!IsEmptyQ(pacijenti_2))
        {
            pacijenti[brojac]=FrontQ(pacijenti_2);
            cout<<"* Pacijent #"<<pacijenti[brojac].broj
                <<"\tPrioritet: "<<pacijenti[brojac].prioritet
                <<"  Ceka: "<<pacijenti[brojac].cekaonica<<"min"
                <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
            DeQueueQ(pacijenti_2);
            brojac++;
        }
        for(int i=0;i<brojac;i++)
            EnQueueQ(pacijenti[i],pacijenti_2);

        brojac=0;
        while(!IsEmptyQ(pacijenti_3))
        {
            pacijenti[brojac]=FrontQ(pacijenti_3);
            cout<<"* Pacijent #"<<pacijenti[brojac].broj
                <<"\tPrioritet: "<<pacijenti[brojac].prioritet
                <<"  Ceka: "<<pacijenti[brojac].cekaonica<<"min"
                <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
            DeQueueQ(pacijenti_3);
            brojac++;
        }
        for(int i=0;i<brojac;i++)
            EnQueueQ(pacijenti[i],pacijenti_3);

        brojac=0;
        while(!IsEmptyQ(pacijenti_4))
        {
            pacijenti[brojac]=FrontQ(pacijenti_4);
            cout<<"* Pacijent #"<<pacijenti[brojac].broj
                <<"\tPrioritet: "<<pacijenti[brojac].prioritet
                <<"  Ceka: "<<pacijenti[brojac].cekaonica<<"min"
                <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
            DeQueueQ(pacijenti_4);
            brojac++;
        }
        for(int i=0;i<brojac;i++)
            EnQueueQ(pacijenti[i],pacijenti_4);
    }
    cout<<"* Nema vise pacijenata!"<<endl;
}

void simulacija(bool prioriteti=false)
{
    vrijeme = clock();
    if(!prioriteti)
    {
        cout<<"\tSimuliram bez prioriteta"<<endl
            <<"------------------------------------------"<<endl;
        if(IsEmptyQ(pacijenti_x)) cout<<"Red je prazan! Nema pacijenata."<<endl;
        _pacijent tekuci;
        stanje(false);
        while(!IsEmptyQ(pacijenti_x))
        {
            tekuci=FrontQ(pacijenti_x);
            DeQueueQ(pacijenti_x);
            ispis(tekuci);
            stanje(false);
        }
    }
    else
    {
        cout<<"\tSimuliram s prioritetima"<<endl
            <<"------------------------------------------"<<endl;
        bool ima_pacijenata = false;

        _pacijent tekuci;
        stanje();
        while(!IsEmptyQ(pacijenti_1))
        {
            ima_pacijenata = true;
            tekuci=FrontQ(pacijenti_1);
            DeQueueQ(pacijenti_1);
            ispis(tekuci);
            stanje();
        }
        while(!IsEmptyQ(pacijenti_2))
        {
            ima_pacijenata = true;
            tekuci=FrontQ(pacijenti_2);
            DeQueueQ(pacijenti_2);
            ispis(tekuci);
            stanje();
        }
        while(!IsEmptyQ(pacijenti_3))
        {
            ima_pacijenata = true;
            tekuci=FrontQ(pacijenti_3);
            DeQueueQ(pacijenti_3);
            ispis(tekuci);
            stanje();
        }
        while(!IsEmptyQ(pacijenti_4))
        {
            ima_pacijenata = true;
            tekuci=FrontQ(pacijenti_4);
            DeQueueQ(pacijenti_4);
            ispis(tekuci);
            stanje();
        }
        if(!ima_pacijenata) cout<<"Red je prazan! Nema pacijenata."<<endl;
    }
    cout<<"Vrijeme izvodjenja funkcije: "<<(clock()-vrijeme)<<"ms"<<endl;
};

int main()
{
    int izbor;
    pacijenti_x=new _red;
    pacijenti_1=new _red;
    pacijenti_2=new _red;
    pacijenti_3=new _red;
    pacijenti_4=new _red;
    InitQ(pacijenti_x);
    InitQ(pacijenti_1);
    InitQ(pacijenti_2);
    InitQ(pacijenti_3);
    InitQ(pacijenti_4);
    do
    {
        cout<<endl<<endl<<"Odaberite:"<<endl
            <<"\t1. Generiranje pacijenata"<<endl
            <<"\t2. Simulacija bez prioriteta"<<endl
            <<"\t3. Simulacija s prioritetima"<<endl
            <<"\t4. Postavi brzinu simulacije (trenutno: 1 minuta = "<<sim_len<<"ms)"<<endl
            <<"\t0. Kraj programa"<<endl
            <<"> Vas izbor? ";
        cin>>izbor;
        switch(izbor)
        {
            case 0:
                return EXIT_SUCCESS;
            case 1:
                generiranje();
                break;
            case 2:
                simulacija(false);
                break;
            case 3:
                simulacija(true);
                break;
            case 4:
                cout<<"> Duljina simulacije minute u milisekundama? (Trenutno: "<<sim_len<<"ms)  ";
                cin>>sim_len;
            default:
                break;
        }
    } while(true);
}

标签:C++

收藏

0人收藏

支持

0

反对

0

»更多 您可能感兴趣的代码
  1. 2017-07-23 12:42:20奇数魔方阵 by Kevin.
  2. 2017-07-18 14:15:24两种方法计算“算术表达式” by aiheng1988
  3. 2015-09-09 16:29:06将jpg转换为bmp格式的文件 by qqmmcc
  4. 2015-09-09 09:29:49可执行文件加密 by walker30
  5. 2015-09-08 18:42:46TCP端口占用查询 by 灵剑子
  6. 2015-09-08 14:16:34Luffar schack五子棋 by 蟋蟀哥
  7. 2015-09-08 10:39:34wav转mp3的程序 by 灵剑子
  8. 2015-09-05 16:54:59逐行搜索目录中的文件内容并输出到Excel by 蟋蟀哥
  9. 2015-09-03 20:10:15LZW+AES+Base64编码解码剪贴板文本 by 童学芬
  10. 2015-09-01 17:47:21猫里奥 by aiheng1988
  11. 2015-08-31 15:33:59模拟键盘操作发送字符串 by 千万不要郁闷

发表评论