Revision: 53747
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 2, 2011 10:39 by vedranvadunec
Initial Code
#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;
}
Initial URL
Initial Description
Vedran Vađunec
Initial Title
Cekaonica i pacjenti - Glavni program
Initial Tags
Initial Language
C++