/ Published in: C++
Glavni program zadatka 3
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <ctime> #include "polje_red.h" using namespace std; pacijent pacijenti[10000]; int broj=0; clock_t vrij_poc, vrij_kraj; void generiraj () { cout << "Unesite broj parova koje zelite generirati: "<<endl; do cin >> broj; while (broj<1 || broj>10000); pacijent pac; for (int i=0; i<broj; i++) { pac.prior=rand()%4+1; pac.x=rand()%10000+1; pac.y=rand()%10000+1; pacijenti[i]=pac; } cout<<"---------------------------------"<<endl; cout << "Zapisi su uspjesno zapisani"<<endl;; cout<<"---------------------------------"<<endl; system ("pause"); } int provjera (int a, int br) { if (!br) return -1; int broj=-1; for (int i=0; i<br; i++) { if (FrontQ(red).prior>a && broj<0) broj=i; EnQueueQ(FrontQ(red), red); DeQueueQ(red); } if (broj>=0) return broj; return -1; } void simulacija1 (bool w) { vrij_poc=clock(); if (!broj) { cout<<"---------------------------------"<<endl; cout << "Polje je prazno!"<<endl; cout<<"---------------------------------"<<endl; system ("pause"); return; } int a=0, brojac=0, mjesto; pacijent pct; cout << endl; while (a<broj || !IsEmptyQ(red)) { if (!a) { pct=pacijenti[a]; a++; cout<<"---------------------------------"<<endl; cout << "Prvi pacijent je u ordinaciji. Tamo ce biti " << pct.y << " vremena."<<endl; if (w) cout << "\nOn ima prioritet broj " << pct.prior << "."; cout<<"---------------------------------"<<endl;} else if (a<broj) { if (pct.y>pacijenti[a].x) { pct.y-=pacijenti[a].x; cout << "Novi pacijent je u cekaonici."<<endl; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet broj " << pacijenti[a].prior << "."<<endl; mjesto=provjera(pacijenti[a].prior, brojac); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(pacijenti[a], red); provjera(5, brojac-mjesto); if (mjesto) cout << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl; else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;} else EnQueueQ(pacijenti[a], red); } brojac++; a++; cout<<"---------------------------------"<<endl; cout << "U cekaonici su/je " << brojac << " pacijenta."<<endl; cout << "Pacijent ce biti u ordinaciji jos " << pct.y << " jedinica vremena.<<endl"; cout<<"---------------------------------"<<endl; } else if (pct.y<pacijenti[a].x) { pacijenti[a].x-=pct.y; if (IsEmptyQ(red)) { pct=pacijenti[a]; a++;} else { pct=FrontQ(red); DeQueueQ(red); brojac--;} cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena."<<endl; if (w) cout << "On ima prioritet broj " << pct.prior << "."<<endl; cout << "U cekaonici su/je: " << brojac << " pacijenta."<<endl;} else { cout << "Novi pacijent je usao u cekaonicu."<<endl; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet: " << pacijenti[a].prior << "."<<endl; mjesto=provjera(pacijenti[a].prior, brojac); if (mjesto>=0) { provjera(5, mjesto); EnQueueQ(pacijenti[a], red); provjera(5, brojac-mjesto); if (mjesto) cout << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl; else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;} else EnQueueQ(pacijenti[a], red);} a++; pct=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena."<<endl; if (w) cout << "On ima prioritet broj: " << pct.prior << "."<<endl; cout << "U cekaonici je:" << brojac << " osoba."<<endl; } } else { pct=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti: " << pct.y << " vremena."<<endl; brojac--; if (w) cout << "\nOn ima prioritet broj: " << pct.prior << "."<<endl; cout << "\nU cekaonici su/je: " << brojac << " pacijenta."<<endl; } cout << "---------------------------------"<<endl; system ("pause"); cout << "---------------------------------"; } vrij_kraj=clock(); cout<<"---------------------------------"<<endl; cout << "Zavrsena simulacija."<<endl; cout<<"---------------------------------"<<endl; system ("pause");} void potr_vrij () { cout<<"---------------------------------"<<endl; cout << "\nPosljednja simulacija je trajala " << (float)(vrij_kraj-vrij_poc)/1000 << " sekundi."<<endl; cout<<"---------------------------------"<<endl; system ("pause"); } int main () { InitQ(red); int izbor; srand(time(0)); rand(); do { system ("cls"); cout << "1. Generiranje parova"<<endl; cout << "2. Simuliranje cekaonice ordinacije"<<endl; cout << "3. Simuliranje cekaonice ordinacije sa prioritetom"<<endl; cout << "4. Vrijeme trajanja zadnje simulacije"<<endl; cout << "0. Izlaz"<<endl; cout << "Vas izbor: "; do cin >> izbor; while (izbor<0 || izbor>4); switch (izbor) { case 1: { generiraj(); break; } case 2: { simulacija1(false); break; } case 3: { simulacija1(true); break; } case 4: { potr_vrij(); } } } while (izbor); return 0; }