Return to Snippet

Revision: 53840
at December 3, 2011 01:57 by nvarsic


Initial Code
#include <cstdlib>
#include <iostream>
#include <ctime>
//#include "red_pokazivac.h"
#include "red_polje.h"
 
using namespace std;
 
int n;
clock_t vrijeme1,vrijeme2;
double razlika;

double vrijeme_pocetak(){
  vrijeme1=clock();
  return (double)vrijeme1;
};

double vrijeme_kraj(){
	vrijeme2=clock();
	return (double)vrijeme2;
};
 
double vrijeme_proteklo(){
	razlika=vrijeme2-vrijeme1;
	return razlika;
};

void generiranje(r *pacijenti){
     
     srand(time(0));
     cout<<"Koliko parova zelite generirati? (1-10000)"<<endl;
     cin>>n;
     tpopis novi;
     for(int i=0;i<n;i++){
             novi.red_br=i+1;
             novi.prvi=((rand()%10001)/1000)+1;
             novi.drugi=((rand()%10001)/1000)+1;
             novi.pok=(rand()%4)+1;
             enqueueq(novi,pacijenti);
     }
};

void ispis(r *pacijenti){
     
     vrijeme_pocetak();
     cout<<"Ispis svih pacijenata"<<endl;
     tpopis tekuci;
     if(isemptyq(pacijenti)) 
             cout<<"Red je prazan"<<endl;
     while(!isemptyq(pacijenti)){
             tekuci=frontq(pacijenti);
             dequeueq(pacijenti);
             cout<<"-----------------------------------"<<endl;
             cout<<"Pacijent broj "<<tekuci.red_br<<endl;
             cout<<"Ceka na red: "<<tekuci.prvi<<" min"<<endl;
             cout<<"U ordinaciji je bio: "<<tekuci.drugi<<" min"<<endl;
             cout<<"Prioritet mu je: "<<tekuci.pok<<endl;
             cout<<"-----------------------------------"<<endl;
     }
     vrijeme_kraj();
     cout<<"Vrijeme trajanja programa: "<<vrijeme_proteklo()/1000<<" s"<<endl;
};
 
void nula(tpopis *polje){
     for(int i=0;i<n;i++){
              polje[i].red_br=0;
              polje[i].prvi=0;
              polje[i].drugi=0;
              polje[i].pok=0;
     }
     n=0;
}
void modifikacija(r *pacijenti){

     vrijeme_pocetak();
     tpopis ordinacija[10000];
     int brojac=0;
     while(!isemptyq(pacijenti)){
        ordinacija[brojac]=frontq(pacijenti);
        brojac++;
        dequeueq(pacijenti);
     }
 
     //sortiranje bubble sort
     bool zamjena=true;
     for(int i=n-1;i>0&&zamjena; i--){
             zamjena=false;
             for(int j=0;j<i;j++){
                     if(ordinacija[j].pok<ordinacija[j+1].pok){
                                                           tpopis pom=ordinacija[j];
                                                           ordinacija[j]=ordinacija[j+1];
                                                           ordinacija[j+1]=pom;
                                                           zamjena=true;
                     }
                     if(ordinacija[j].pok==ordinacija[j+1].pok){
                                                            if(ordinacija[j].prvi<ordinacija[j+1].prvi){
                                                                   tpopis pom=ordinacija[j];
                                                                   ordinacija[j]=ordinacija[j+1];
                                                                   ordinacija[j+1]=pom;
                                                                   zamjena=true;
                                                            }
                     }
             }
     }
 
     for(int i=0;i<n;i++)   
            enqueueq(ordinacija[i],pacijenti);
 
     cout<<"Ispis svih pacijenata"<<endl;
     tpopis tekuci;
     if(isemptyq(pacijenti)) 
            cout<<"Red je prazan"<<endl;
     while(!isemptyq(pacijenti)){
             tekuci=frontq(pacijenti);
             dequeueq(pacijenti);
             cout<<"-----------------------------------"<<endl;
             cout<<"Pacijent broj "<<tekuci.red_br<<endl;
             cout<<"Ceka na red: "<<tekuci.prvi<<" min"<<endl;
             cout<<"U ordinaciji je bio: "<<tekuci.drugi<<" min"<<endl;
             cout<<"Prioritet mu je: "<<tekuci.pok<<endl;
             cout<<"-----------------------------------"<<endl;
    }
    vrijeme_kraj();
    cout<<"Vrijeme izvodenja funkcije u sekundama: "<<vrijeme_proteklo()/1000<<endl; 
    nula(ordinacija);
}     
 
int main(){
    
    int izbor;
    r *pacijenti;
    pacijenti=new r;
    initq(pacijenti);
    do{
                     cout<<"\n";
                     cout<<"IZBORNIK"<<endl;
                     cout<<"1. Generiranje pacijenata"<<endl;
                     cout<<"2. Simulacija"<<endl;
                     cout<<"3. Modifikacija"<<endl;
                     cout<<"9. Izlaz\n"<<endl;
                     cin>>izbor;
                     switch(izbor){
                                   case 1: generiranje(pacijenti); 
                                        break;
                                   case 2: ispis(pacijenti);
                                        break;
                                   case 3: modifikacija(pacijenti);
                                        break;
                                   case 9: 
                                        return 0;
                                   default: cout<<"Krivi unos!"<<endl;
                                   
                                  }
    }while(izbor != 9);
    
    system("PAUSE");
    return 0;
}

Initial URL


Initial Description
strukture podataka - zadatak 3

Initial Title
Glavni program - red

Initial Tags


Initial Language
C++