/ Published in: C++
Vedran Vađunec
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <cstdlib> #include <iostream> #include <ctime> #include "biblioteka_vrijeme.cc" #include "red_polje.h" // #include "red_pokazivac.h" using namespace std; int broj; void izbornik(){ system("cls"); cout<<"---Simulacija rada ordinacije------"<<endl; cout<<"---------Izbornik---------"<<endl; cout<<"1. Generiranje pacijenata."<<endl; cout<<"2. Simulacija cekaonice BEZ obzira na prioritet."<<endl; cout<<"3. Simulacija cekaonice SA obzira na prioritet."<<endl; cout<<"9. Izlaz"<<endl; cout<<"-------Vedran Vadunec-------"<<endl; cout<<"Izbor: "; } void generiranje(red *Red){ srand(time(0)); do{ cout<<"\nKoliko parova zelite generirati? "; cin>>broj; if(broj>10000||broj<=0) cout<<"\nBroj mora biti u rasponu od 1-10000"<<endl; }while(broj>10000||broj<=0); cekaonica zapis; for(int i=0;i<broj;i++){ zapis.broj_pacjenta=i+1; zapis.cekanje=(rand()%21)+1; zapis.proteklo_u_ordinaciji=(rand()%21)+1; zapis.prioritet=(rand()%4)+1; EnqueueQ(zapis,Red); } } void simulacija(red *Red, bool mogucnost){ bool prepisan=false; if (mogucnost){ vrijeme_pocetak(); red pomocni_red; InitQ(&pomocni_red); cout<<"\nIspis:"<<endl; cout<<"-----------------------------------"<<endl; cekaonica tekuci; if(IsemptyQ(Red)) cout<<"Red je prazan!"<<endl; while(!IsemptyQ(Red)){ tekuci=FrontQ(Red); cout<<"Broj pacjenta: "<<tekuci.broj_pacjenta<<endl; cout<<"Cekanje: "<<tekuci.cekanje<<" min"<<endl; cout<<"Provedeno u ordinaciji: "<<tekuci.proteklo_u_ordinaciji<<" min"<<endl; cout<<"Prioritet: "<<tekuci.prioritet<<endl; cout<<"-----------------------------------"<<endl; EnqueueQ(tekuci,&pomocni_red); DequeueQ(Red); } vrijeme_kraj(); cout<<"Vrijeme izvrsavanja: "<<vrijeme_proteklo()/1000<<" sekundi"<<endl; cout<<"-----------------------------------\n"<<endl; while(!IsemptyQ(&pomocni_red)){ tekuci = FrontQ(&pomocni_red); EnqueueQ(tekuci, Red); DequeueQ(&pomocni_red); } } else{ vrijeme_pocetak(); cekaonica zapis; cekaonica polje[10000]; int brojac=0; while(!IsemptyQ(Red)){ polje[brojac]=FrontQ(Red); brojac++; DequeueQ(Red); } bool zamjena=true; for(int i=broj-1;i>0&&zamjena; i--){ zamjena=false; for(int j=0;j<i;j++){ if(polje[j].prioritet>polje[j+1].prioritet){ cekaonica pom=polje[j]; polje[j]=polje[j+1]; polje[j+1]=pom; zamjena=true; } if(polje[j].prioritet==polje[j+1].prioritet){ if(polje[j].cekanje>polje[j+1].cekanje){ cekaonica pom=polje[j]; polje[j]=polje[j+1]; polje[j+1]=pom; zamjena=true; } } } } for(int i=0;i<broj;i++) EnqueueQ(polje[i],Red); red pomocni_red; InitQ(&pomocni_red); cout<<"\nIspis:"<<endl; cout<<"-----------------------------------"<<endl; if(IsemptyQ(Red)) cout<<"Red je prazan"<<endl; while(!IsemptyQ(Red)){ zapis=FrontQ(Red); cout<<"Broj pacjenta: "<<zapis.broj_pacjenta<<endl; cout<<"Cekanje: "<<zapis.cekanje<<" min"<<endl; cout<<"Provedeno u ordinaciji: "<<zapis.proteklo_u_ordinaciji<<" min"<<endl; cout<<"Prioritet: "<<zapis.prioritet<<endl; cout<<"-----------------------------------"<<endl; EnqueueQ(zapis,&pomocni_red); DequeueQ(Red); } while(!IsemptyQ(&pomocni_red)){ zapis = FrontQ(&pomocni_red); EnqueueQ(zapis, Red); DequeueQ(&pomocni_red); } vrijeme_kraj(); cout<<"Vrijeme izvrsavanja: "<<vrijeme_proteklo()/1000<<" sekundi."<<endl; cout<<"-----------------------------------\n"<<endl; } } int main(){ int izbor; bool mogucnost; red Red; InitQ(&Red); do{ izbornik(); cin>>izbor; switch(izbor){ case 1: generiranje(&Red); break; case 2: simulacija(&Red,true); break; case 3: simulacija(&Red,false); break; case 9: break; default: cout<<"\nUnjeli ste krivu opciju, pokusajte ponovno!"<<endl; } cout<<endl; system("pause"); } while (izbor!=9); return 0; }