/ Published in: C++

simulacija rada lijeÄniÄke ordinacije
Expand |
Embed | Plain Text
#include<iostream> #include<iomanip> #include<time.h> //#include "red_pokazivac.h" #include "red_polje.h" #define N 10000 using namespace std; void generiraj(int par[],int prioritet_pacijenta[],int broj); void ispis(int par[],int prioritet_pacijenta[],int broj); void simuliranje(int par[],int prioritet_pacijenta[],int broj,int radi); void cekaonica(int par[],int broj); void modifikacija(int par[],int prioritet_pacijenta[],int broj); int main(void){ int broj; int izbor; cout<<"Unesite broj pacijenata:"; cin>>broj; int *par=new int[2*broj]; int *prioritet_pacijenta=new int[2*broj]; bool generiranje=false; while(izbor!=9){ system("cls"); cout<<"Izbornik"<<endl; cout<<"1.Generiranje zapisa pacijenata"<<endl; cout<<"2.Simulacija cekaonice"<<endl; cout<<"3.Modifikacija simulacije cekaonice"<<endl; cout<<"9.Izlaz"<<endl; cout<<"Izbor:"; cin>>izbor; if(generiranje==false&&izbor!=0&&izbor!=1&&izbor!=9){ cout<<"Pogresan unos"<<endl; system("pause"); continue; } switch(izbor){ case 1: generiraj(par,prioritet_pacijenta,broj); generiranje=true; ispis(par,prioritet_pacijenta,broj); break; case 2: simuliranje(par,prioritet_pacijenta,broj,1); break; case 3: simuliranje(par,prioritet_pacijenta,broj,2); break; case 9: cout<<"Izlaz iz programa"<<endl; break; default: cout<<"Krivi unos"<<endl; } system("pause"); }; delete[] par; delete[] prioritet_pacijenta; return 0; }; void generiraj(int par[],int prioritet_pacijenta[],int broj){ srand((unsigned)time(0)); int x=0; while(x<broj){ par[x]=rand()%N+1; par[broj+x]=rand()%N+1; prioritet_pacijenta[x]=rand()%4+1; x++; }; }; void ispis(int par[],int prioritet_pacijenta[],int broj){ cout<<endl<<setw(5)<<"Xi"<<setw(10)<<"Yi"<<setw(17)<<"Prioritet"<<endl; int x=0; while(x<broj){ cout<<setw(5)<<par[x]<<setw(10)<<par[broj+x]<<setw(12)<<prioritet_pacijenta[x]<<endl; x++; }; }; void simuliranje(int par[],int prioritet_pacijenta[],int broj,int radi){ cout<<"Stanje:"<<endl; ispis(par,prioritet_pacijenta,broj); float vrijeme_pocetak=clock(); if(radi==1) cekaonica(par,broj); else modifikacija(par,prioritet_pacijenta,broj); float vrijeme_kraj=clock(); cout<<"Vrijeme:"<<(vrijeme_kraj-vrijeme_pocetak)<<" ms"<<endl<<endl; }; void cekaonica(int par[],int broj){ red *red=InitQ(red); int pocetak; int kraj; int x; int y; int pomocna; pocetak=kraj=x=y=pomocna=0; element e; cout<<endl; while(y<broj){ e.i = par[y]; e.j=par[broj+y++]; EnQueueQ(e,red); cout<<++x<<". pacijent:"<<endl; pomocna=FrontQ(red).i; cout<<"Na vrhu reda se nalazi:"<<pomocna<<endl; cout<<"Vrijeme dolaska pacijenata:"<<pocetak<<endl; kraj=FrontQ(red).j; cout<<"Vrijeme u ordinaciji:"<<kraj<<endl; pocetak=pocetak+kraj; cout<<"Vrijeme odlaska iz ordinacije:"<<pocetak<<endl<<endl; pocetak=pocetak+pomocna; DeQueueQ(red); }; delete [] red; }; void modifikacija(int par[],int prioritet_pacijenta[],int broj){ int *parovi=new int[2*broj]; int *prioriteti=new int[2*broj]; int x=0, y, pom1, pom2, pom3; while(x<broj){ parovi[x]=par[x]; parovi[broj+x]=par[broj+x]; prioriteti[x]=prioritet_pacijenta[x]; x++; }; x=1; while(x<broj){ pom1=prioriteti[x]; pom2=parovi[x]; pom3=parovi[broj+x]; y=x-1; while(y>=0&&prioriteti[y]>pom1){ prioriteti[y+1]=prioriteti[y]; parovi[y+1]=parovi[y]; parovi[broj+y+1]=parovi[broj+y--]; }; prioriteti[y+1]=pom1; parovi[y+1]=pom2; parovi[broj+y+1]=pom3; x++; }; cekaonica(parovi,broj); delete[] parovi; delete[] prioriteti; };
You need to login to post a comment.