/ Published in: C++
Glavni program
Expand |
Embed | Plain Text
#include <iostream> #include <ctime> #include "red_polje.h" //#include "red_pokazivac.h" #include <time.h> osoba polje[10000]; int n; clock_t vrijeme1,vrijeme2; double vrijeme11=0, vrijeme22=0; //varijable za racunanje vremena 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; }; using namespace std; void generiranje(int n) { osoba aa; for(int x=0;x<n;x++) { aa.a=rand()%4+1; aa.x=rand()%10000+1; aa.y=rand()%10000+1; polje[x]=aa; } } int provjera (int a, int b) { if (!b) return -1; int broj=-1; for (int i=0; i<b; i++) { if (FrontQ(red).a>a && broj<0) broj=i; EnQueueQ(FrontQ(red), red); DeQueueQ(red); } if (broj>=0) return broj; return -1; } void posluzivanje1() { vrijeme_pocetak(); if (n==0) { cout << "\nPolje je prazno!\n"; system ("pause"); return; } int a=0, br=0, mjesto; osoba ord; cout <<"\n"; while (a<n || !IsEmptyQ(red)) { if (!a) { ord=polje[a]; a++; cout <<"Prvi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; } else if (a<n) { if (ord.y>polje[a].x) { ord.y-=polje[a].x; cout << "Dosao je novi pacijent u cekaonicu"; EnQueueQ(polje[a], red); br++; a++; cout << "\nU cekaonici je trenutno " << br << " pacijenta"; cout << "\nPacijent u ordinaciji ce biti gotov za " << ord.y << " jedinica vremena."; } else if (ord.y<polje[a].x) { polje[a].x-=ord.y; if (IsEmptyQ(red)) { ord=polje[a]; a++; } else { ord=FrontQ(red); DeQueueQ(red); br--; } cout << "Novi pacijent je u ordinaciji.\n"; cout << "U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } else { cout << "Novi pacijent je usao u cekaonicu."; EnQueueQ(polje[a], red); a++; ord=FrontQ(red); DeQueueQ(red); cout <<"\nNovi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } } else { ord=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; br--; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } cout << "\n\n---------------------------------------------------\n"; system ("pause"); cout << "---------------------------------------------------\n\n"; } cout << "KRAJ SIMULACIJE SLIJEDNOG USLUZIVANJA PACIJENATA\n"; cout << "\n---------------------------------------------------\n\n"; system ("pause"); vrijeme_kraj(); vrijeme11=vrijeme_proteklo()/1000; } void posluzivanje2() { vrijeme_pocetak(); if (n==0) { cout << "\nPolje je prazno!\n"; system ("pause"); return; } int a=0, br=0, mjesto; osoba ord; cout <<"\n"; while (a<n || !IsEmptyQ(red)) { if (!a) { ord=polje[a]; a++; cout <<"Prvi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; cout << "\nNjegov prioritet je " << ord.a << "."; } else if (a<n) { if (ord.y>polje[a].x) { ord.y-=polje[a].x; cout << "Dosao je novi pacijent u cekaonicu"; cout << "\nNjegov prioritet je: " << polje[a].a << "."; mjesto=provjera(polje[a].a, br); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(polje[a], red); provjera(5, br-mjesto); if (mjesto) cout << "\nPacijent je preskocio " << br-mjesto << " pacijenta/e u redu jer ima veci prioritet."; else cout << "\nPacijent je dosao na celo reda jer ima najveci prioritet."; } else EnQueueQ(polje[a], red); br++; a++; cout << "\nU cekaonici je trenutno " << br << " pacijenta"; cout << "\nPacijent u ordinaciji ce biti gotov za " << ord.y << " jedinica vremena."; } else if (ord.y<polje[a].x) { polje[a].x-=ord.y; if (IsEmptyQ(red)) { ord=polje[a]; a++; } else { ord=FrontQ(red); DeQueueQ(red); br--; } cout << "Novi pacijent je u ordinaciji.\n"; cout << "U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; cout << "\nNjegov prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } else { cout << "Novi pacijent je usao u cekaonicu."; cout << "\nNjegov prioritet je " << polje[a].a << "."; mjesto=provjera(polje[a].a, br); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(polje[a], red); provjera(5, br-mjesto); if (mjesto) cout << "\nPacijent je preskocio " << br-mjesto << " pacijenta/e u redu jer ima veci prioritet."; else cout << "\nPacijent je dosao na celo reda jer ima najveci prioritet."; } else EnQueueQ(polje[a], red); a++; ord=FrontQ(red); DeQueueQ(red); cout <<"\nNovi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; cout << "\nNjegov prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } } else { ord=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju.\n"; cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena."; br--; cout << "\nNjegov prioritet je " << ord.a << "."; cout << "\nU cekaonici je trenutno " << br << " pacijenta."; } cout << "\n\n---------------------------------------------------\n"; system ("pause"); cout << "---------------------------------------------------\n\n"; } cout << "KRAJ SIMULACIJE SLIJEDNOG USLUZIVANJA PACIJENATA SA PRIORITETOM\n"; cout << "\n---------------------------------------------------\n\n"; system ("pause"); vrijeme_kraj(); vrijeme22=vrijeme_proteklo()/1000; } int main() { int izbor; srand(time(0)); InitQ (red); do{ system("cls"); cout <<"-------------------------IZBORNIK-------------------------\n"; cout <<"1. Generiranje n parova slucajnih brojeva u red.\n"; cout <<"2. Posluzivanje pacijenta slijedno\n"; cout <<"3. Posluzivanje pacijenta sa prioritetom\n"; cout <<"4. Mjerenje vremena\n"; cout <<"0. Kraj programa.\n"; cout <<"----------------------------------------------------------\n"; cout <<"Vas izbor = "; cin >>izbor; switch(izbor) { case 1:{ cout <<"Birali ste opciju 1. Generiranje n parova slucajnih brojeva u red\n"; cout <<"Unesite n = "; cin >>n; generiranje(n); cout <<"\nBrojevi su spremljeni u polje\n"; system("pause"); }break; case 2:{ cout <<"Birali ste opciju 2. Posluzivanje pacijenta\n"; system("pause"); posluzivanje1(); }break; case 3:{ cout <<"Birali ste opciju 3. Posluzivanje pacijenta sa prioritetom\n"; posluzivanje2(); }break; case 4:{ cout <<"Birali ste opciju 4. Mjerenje vremena za zadatke 2 i 3 \n"; cout <<"Zelite li mjeriti zadatak 1 ili 2? "; int izb; do cin >>izb; while(izb!=1&&izb!=2); switch(izb){ case 1:{ cout <<"\nMjerite vrijeme za posluzivanje pacijenta slijedno: \n"; cout <<"\nUkupno vrijeme izvodenja programa je: " <<vrijeme11 <<" tisucinki \n"; }break; case 2:{ cout <<"\nMjerite vrijeme za posluzivanje pacijenta slijedno sa prioritetom: \n"; cout <<"\nUkupno vrijeme izvodenja programa je: " <<vrijeme22 <<" tisucinki \n"; }break; } system("pause"); }break; } }while(izbor!=0); system("pause"); return 0; }
You need to login to post a comment.
