Revision: 53942
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at December 3, 2011 07:55 by mavukusic9
Initial Code
//red_polje.h struct pacijent { int prior, x, y; }; struct qu { pacijent el[10000]; int front, rear; }; qu red; int AddOne (int mjesto) { return ((mjesto+1)%10000); } pacijent FrontQ (qu red_atp) { return red_atp.el[red_atp.front]; } void EnQueueQ (pacijent pac, qu &red_atp) { red_atp.rear=AddOne(red_atp.rear); red_atp.el[red_atp.rear]=pac; } void DeQueueQ (qu &red_atp) { red_atp.front=AddOne(red_atp.front); } bool IsEmptyQ (qu red_atp) { if (AddOne(red_atp.rear)==red_atp.front) return true; return false; } void InitQ (qu &red_atp) { red_atp.front=0; red_atp.rear=9999; } //red_pokazivac.h struct pacijent { int prior, x, y; }; struct qu { pacijent el; qu *next; }; struct que { qu *front, *rear; }; que red; pacijent FrontQ (que red_atp) { return ((red_atp.front)->next)->el;; } void EnQueueQ (pacijent pac, que &red_atp) { qu *novi=new qu; novi->el=pac; novi->next=NULL; (red_atp.rear)->next=novi; red_atp.rear=novi; } void DeQueueQ (que &red_atp) { qu *brisi=red_atp.front; red_atp.front=(red_atp.front)->next; delete brisi; } bool IsEmptyQ (que red_atp) { if (red_atp.rear==red_atp.front) return true; return false; } void InitQ (que &red_atp) { qu *novi=new qu; novi->next=NULL; red.rear=novi; red.front=novi; } //main program #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 generiranja: "; 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 << "\nZapisi su uspjesno zapisani.\n"; 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 << "\nPolje 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.\n"; 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.\n"; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet broj " << pacijenti[a].prior << ".\n"; 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.\n";} 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.\n"; 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.\n"; if (w) cout << "\nOn ima prioritet broj " << pct.prior << "."; cout << "\nU cekaonici su/je: " << brojac << " pacijenta.\n";} else { cout << "Novi pacijent je usao u cekaonicu.\n"; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet: " << pacijenti[a].prior << ".\n"; 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.\n";} else EnQueueQ(pacijenti[a], red);} a++; pct=FrontQ(red); DeQueueQ(red); cout << "\nNovi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena.\n"; if (w) cout << "\nOn ima prioritet broj: " << pct.prior << ".\n"; cout << "\nU cekaonici je:" << brojac << " osoba.\n"; } } else { pct=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti: " << pct.y << " vremena.\n"; brojac--; if (w) cout << "\nOn ima prioritet broj: " << pct.prior << ".\n"; cout << "\nU cekaonici su/je: " << brojac << " pacijenta.\n"; } cout << "\n\n-----------------------------\n"; system ("pause"); cout << "-----------------------------\n\n"; } vrij_kraj=clock(); cout<<"-----------------------------"<<endl; cout << "Zavrsena simulacija.\n"; 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<<endl; cout << "2. Simuliranje cekaonice "<<endl<<endl; cout << "3. Simuliranje cekaonice sa prioritetom"<<endl<<endl; cout << "4. Vrijeme trajanja zadnje simulacije"<<endl<<endl; cout << "0. Izlaz"<<endl<<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; }
Initial URL
Initial Description
Rad lijeÄniÄke ordinacije
Initial Title
Strukture podataka (program koji simulira rad lijeÄniÄke ordinacije)
Initial Tags
c++
Initial Language
C++