Return to Snippet

Revision: 53747
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++