podataka结构(koji simulira rad lijeÄniÄke ordinacije项目)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了podataka结构(koji simulira rad lijeÄniÄke ordinacije项目)相关的知识,希望对你有一定的参考价值。
Rad lijeÄniÄke ordinacije
//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 << " Unesite 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 << " Zapisi su uspjesno zapisani. "; 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. "; if (w) cout << " On 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. "; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet broj " << pacijenti[a].prior << ". "; 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. "; else cout << " pacijent je dosao na celo reda zbog najveceg prioriteta. ";} else EnQueueQ(pacijenti[a], red); } brojac++; a++; cout<<"-----------------------------"<<endl; cout << " U cekaonici su/je " << brojac << " pacijenta."; cout << " Pacijent ce biti u ordinaciji jos " << pct.y << " jedinica vremena. "; 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. "; if (w) cout << " On ima prioritet broj " << pct.prior << "."; cout << " U cekaonici su/je: " << brojac << " pacijenta. ";} else { cout << "Novi pacijent je usao u cekaonicu. "; if (!w) EnQueueQ(pacijenti[a], red); else { cout << " On ima prioritet: " << pacijenti[a].prior << ". "; 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. "; else cout << " Pacijent je dosao na celo reda zbog najveceg prioriteta. ";} else EnQueueQ(pacijenti[a], red);} a++; pct=FrontQ(red); DeQueueQ(red); cout << " Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena. "; if (w) cout << " On ima prioritet broj: " << pct.prior << ". "; cout << " U cekaonici je:" << brojac << " osoba. "; } } else { pct=FrontQ(red); DeQueueQ(red); cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti: " << pct.y << " vremena. "; brojac--; if (w) cout << " On ima prioritet broj: " << pct.prior << ". "; cout << " U cekaonici su/je: " << brojac << " pacijenta. "; } cout << " ----------------------------- "; system ("pause"); cout << "----------------------------- "; } vrij_kraj=clock(); cout<<"-----------------------------"<<endl; cout << "Zavrsena simulacija. "; cout<<"-----------------------------"<<endl; system ("pause");} void potr_vrij () { cout<<"-----------------------------"<<endl; cout << " Posljednja 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; }
以上是关于podataka结构(koji simulira rad lijeÄniÄke ordinacije项目)的主要内容,如果未能解决你的问题,请参考以下文章
结构podataka-Zadataku 1-Glavniu计划
结构podataka/Evensicijaživotinja/Main