/ Published in: C++
strukture podataka - zadatak 3
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#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; }