/ Published in: C++
Zadatak 3, strukture podataka
Expand |
Embed | Plain Text
Copy this code and paste it in your HTML
#include <iostream> #include <ctime> //#include "red_pokazivac.h" #include "red_polje.h" using namespace std; pacijent pacijenti[10000]; int broj=0; clock_t vrij_poc, vrij_kraj; void generiraj () { cout << "\nUnesite broj parova koje zelite generirati: "; 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 << "." << endl; cout<<"-----------------------------"<<endl; } else if (a<broj) { if (pct.y>pacijenti[a].x) { pct.y-=pacijenti[a].x; cout << "Novi pacijent je u cekaonici.\n"; 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 << "\nPacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta.\n"; else cout << "\npacijent je dosao na celo reda zbog najveceg prioriteta." << endl; } else EnQueueQ(pacijenti[a], red); } brojac++; a++; cout<<"-----------------------------"<<endl; cout << "\nU cekaonici su/je " << brojac << " pacijenta."; cout << "\nPacijent 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 << "\nOn ima prioritet broj " << pct.prior << "."; cout << "\nU 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 << "\nPacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta." << endl; else cout << "\nPacijent je dosao na celo reda zbog najveceg prioriteta." << endl;} else EnQueueQ(pacijenti[a], red); } a++; pct=FrontQ(red); DeQueueQ(red); cout << "\nNovi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena." << endl; if (w) cout << "\nOn ima prioritet broj: " << pct.prior << "." << endl; cout << "\nU 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 << "\n-----------------------------" << endl; system ("pause"); cout << "-----------------------------\n\n"; } 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<<"---------------------------------------------------------"<<endl; cout << "1. Generiranje parova"<<endl<<endl; cout << "2. Simuliranje cekaonice ordinacije"<<endl<<endl; cout << "3. Simuliranje cekaonice ordinacije s prioritetom"<<endl<<endl; cout << "4. Vrijeme trajanja zadnje simulacije"<<endl<<endl; cout << "0. Izlaz"<<endl<<endl; cout<<"---------------------------------------------------------"<<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; }