Revision: 53840
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
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++