/ Published in: C++
simulacija rada lijecnicke ordinacije
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
//red_pokazivac.h #include <cstdlib> #include <iostream> using namespace std; struct tpacijent { int rbp; int x; int y; int z; }; struct t{ tpacijent vrij; t *sljedeci; }; struct q{ t *front, *rear; }; void initq(q *queue){ queue->front=(t*)malloc(sizeof(t)); queue->front->sljedeci=NULL; queue->rear=queue->front; cout<<"Red je inicijaliziran"<<endl; }; bool isemptyq(q*queue){ if(queue->front==queue->rear) return true; else return false; }; void enqueueq(tpacijent x,q *queue){ t *pom; pom=new t; pom->vrij=x; pom->sljedeci=NULL; queue->rear->sljedeci=pom; queue->rear=pom; }; void dequeueq(q*queue){ t *pom; if(isemptyq(queue)) cout<<"Red je prazan"; else{ pom=queue->front; queue->front=queue->front->sljedeci; free(pom); } }; tpacijent frontq(q *queue){ if(isemptyq(queue)) cout<<"Red je prazan"; else return (queue->front->sljedeci->vrij); }; //red_polje.h #include <cstdlib> #include <iostream> using namespace std; struct tpacijent { int rbp; int x; int y; int z; }; struct q{ tpacijent vrij[10000]; int front, rear; }; int addone(int i){ return ((i+1)%10000); }; void initq(q*queue){ queue->front=0; queue->rear=9999; //zadnji el polja cout<<"red je inicijaliziran"<<endl; }; bool isemptyq(q *queue){ if(addone(queue->rear)==queue->front) return true; else return false; }; void enqueueq(tpacijent x, q*queue){ if(addone(addone(queue->rear))==(queue->front)) cout<<"red je pun"; else { queue->rear=addone(queue->rear); queue->vrij[queue->rear]=x; } }; void dequeueq(q *queue){ if(isemptyq(queue)) cout<<"red je prazan"; else queue->front=addone(queue->front); }; tpacijent frontq(q*queue){ if(isemptyq(queue)) cout<<"red je prazan"; else return (queue->vrij[queue->front]); }; //glavni #include <cstdlib> #include <iostream> #include <ctime> #include "red_pokazivac.h" //#include "red_polje.h" using namespace std; int n; clock_t time1,time2; double pocetak(){ time1=clock(); return time1; }; double kraj(){ time2=clock(); return time2; }; double proteklo(){ return time2-time1; }; void generiranje(q*pacijenti){ srand(time(0)); cout<<"Koliko parova zelite generirati? (1-10000)"<<endl; cin>>n; tpacijent novi; for(int i=0;i<n;i++){ novi.rbp=i+1; novi.x=((rand()%10001)/1000)+1; novi.y=((rand()%10001)/1000)+1; novi.z=(rand()%4)+1; enqueueq(novi,pacijenti); } }; void primanje(q *pacijenti){ pocetak(); cout<<"Ispis svih pacijenata"<<endl; tpacijent tekuci; if(isemptyq(pacijenti)) cout<<"Red je prazan"<<endl; for(int i=0;i<n;i++){ tekuci=frontq(pacijenti); dequeueq(pacijenti); cout<<"pacijent br....."<<tekuci.rbp<<endl; cout<<"cekanje:........"<<tekuci.x<<" min"<<endl; cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl; cout<<"*************************"<<endl; enqueueq(tekuci,pacijenti); } kraj(); cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl; }; void modifikacija(q *pacijenti){ pocetak(); tpacijent ord[10000]; int brojac=0; while(!isemptyq(pacijenti)){ ord[brojac]=frontq(pacijenti); brojac++; dequeueq(pacijenti);} bool zamjena=true; for(int i=n-1;i>0&&zamjena; i--){ zamjena=false; for(int j=0;j<i;j++){ if(ord[j].z>ord[j+1].z){ tpacijent pom=ord[j]; ord[j]=ord[j+1]; ord[j+1]=pom; zamjena=true; } if(ord[j].z==ord[j+1].z){ if(ord[j].x<ord[j+1].x){ tpacijent pom=ord[j]; ord[j]=ord[j+1]; ord[j+1]=pom; zamjena=true; } } } } for(int i=0;i<n;i++) enqueueq(ord[i],pacijenti); cout<<"Stanje reda"<<endl; tpacijent tekuci; if(isemptyq(pacijenti)) cout<<"red je prazan"<<endl; while(!isemptyq(pacijenti)){ tekuci=frontq(pacijenti); dequeueq(pacijenti); cout<<"pacijent br....."<<tekuci.rbp<<endl; cout<<"cekanje:........"<<tekuci.x<<" min"<<endl; cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl; cout<<"prioritet:......"<<tekuci.z<<endl; cout<<"***********************"<<endl; } enqueueq(tekuci,pacijenti); kraj(); cout<<"Vrijeme trajanja u sekundama: "<<proteklo()/1000<<endl; } int main() { int izbor; q *pacijenti; pacijenti=new q; initq(pacijenti); do{ cout<<"*********I Z B O R N I K**********: "<<endl; cout<<"1) generiranje pacijenata"<<endl; cout<<"2) Primanje pacijenata"<<endl; cout<<"3) Primanje pacijenata prema prioritetu"<<endl; cout<<"9) za kraj programa"<<endl; cin>>izbor; switch(izbor){ case 1: generiranje(pacijenti); break; case 2: primanje(pacijenti);break; case 3: modifikacija(pacijenti);break; default: break; }} while(izbor!=9); system("PAUSE"); return 0; }
Comments
Subscribe to comments
