Posted By

zstrahij1 on 12/03/11


Tagged

red Strukture podataka ATP


Versions (?)

Program


 / Published in: C++
 

Program 3

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>
  4. #include "windows.h"
  5.  
  6. #define LIST_LEN 10240
  7. //#include "red_pokazivac.h"
  8. #include "red_polje.h"
  9.  
  10. using namespace std;
  11.  
  12. int sim_len = 333;
  13. clock_t vrijeme;
  14.  
  15. _red *pacijenti_x;
  16. _red *pacijenti_1;
  17. _red *pacijenti_2;
  18. _red *pacijenti_3;
  19. _red *pacijenti_4;
  20.  
  21. void generiranje()
  22. {
  23. srand(time(0));
  24. int n;
  25. cout<<"> Koliko parova zelite generirati? (Max "<< LIST_LEN <<")\t";
  26. cin>>n;
  27. _pacijent novi;
  28. for(int i=0; i<n; i++)
  29. {
  30. novi.broj=i+1;
  31. novi.cekaonica=rand()%30+1;
  32. novi.ordinacija=rand()%15+1;
  33. novi.prioritet=rand()%4+1;
  34. EnQueueQ(novi,pacijenti_x);
  35. switch(novi.prioritet)
  36. {
  37. case 1:
  38. EnQueueQ(novi,pacijenti_1);
  39. break;
  40. case 2:
  41. EnQueueQ(novi,pacijenti_2);
  42. break;
  43. case 3:
  44. EnQueueQ(novi,pacijenti_3);
  45. break;
  46. case 4:
  47. EnQueueQ(novi,pacijenti_4);
  48. }
  49. }
  50. };
  51.  
  52. void ispis(_pacijent trenutni)
  53. {
  54. cout<<endl
  55. <<"Ulazi pacijent #"<<trenutni.broj<<"\tPrioritet: "<<trenutni.prioritet<<endl
  56. <<"> Ceka";
  57. for(int j=0; j<trenutni.cekaonica; j++)
  58. {
  59. Sleep(sim_len);
  60. cout<<".";
  61. }
  62. cout<<endl<<" Proteklo "<<trenutni.cekaonica<<" min"<<endl;
  63. cout<<"> U ordinaciji";
  64. for(int j=0; j<trenutni.ordinacija; j++)
  65. {
  66. Sleep(sim_len);
  67. cout<<".";
  68. }
  69. cout<<endl<<" Proteklo "<<trenutni.ordinacija<<" min"<<endl
  70. <<"------------------------------------------"<<endl;
  71. }
  72.  
  73. void stanje(bool prioriteti = true)
  74. {
  75. _pacijent pacijenti[LIST_LEN];
  76. int brojac=0;
  77. if(!prioriteti)
  78. {
  79. cout<<"Stanje reda:"<<endl;
  80. while(!IsEmptyQ(pacijenti_x))
  81. {
  82. pacijenti[brojac]=FrontQ(pacijenti_x);
  83. cout<<"* Pacijent #"<<pacijenti[brojac].broj
  84. <<"\tCeka: "<<pacijenti[brojac].cekaonica<<"min"
  85. <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
  86. DeQueueQ(pacijenti_x);
  87. brojac++;
  88. }
  89. for(int i=0;i<brojac;i++)
  90. EnQueueQ(pacijenti[i],pacijenti_x);
  91. }
  92. else
  93. {
  94. cout<<"Stanje reda:"<<endl;
  95. while(!IsEmptyQ(pacijenti_1))
  96. {
  97. pacijenti[brojac]=FrontQ(pacijenti_1);
  98. cout<<"* Pacijent #"<<pacijenti[brojac].broj
  99. <<"\tPrioritet: "<<pacijenti[brojac].prioritet
  100. <<" Ceka: "<<pacijenti[brojac].cekaonica<<"min"
  101. <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
  102. DeQueueQ(pacijenti_1);
  103. brojac++;
  104. }
  105. for(int i=0;i<brojac;i++)
  106. EnQueueQ(pacijenti[i],pacijenti_1);
  107.  
  108. brojac=0;
  109. while(!IsEmptyQ(pacijenti_2))
  110. {
  111. pacijenti[brojac]=FrontQ(pacijenti_2);
  112. cout<<"* Pacijent #"<<pacijenti[brojac].broj
  113. <<"\tPrioritet: "<<pacijenti[brojac].prioritet
  114. <<" Ceka: "<<pacijenti[brojac].cekaonica<<"min"
  115. <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
  116. DeQueueQ(pacijenti_2);
  117. brojac++;
  118. }
  119. for(int i=0;i<brojac;i++)
  120. EnQueueQ(pacijenti[i],pacijenti_2);
  121.  
  122. brojac=0;
  123. while(!IsEmptyQ(pacijenti_3))
  124. {
  125. pacijenti[brojac]=FrontQ(pacijenti_3);
  126. cout<<"* Pacijent #"<<pacijenti[brojac].broj
  127. <<"\tPrioritet: "<<pacijenti[brojac].prioritet
  128. <<" Ceka: "<<pacijenti[brojac].cekaonica<<"min"
  129. <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
  130. DeQueueQ(pacijenti_3);
  131. brojac++;
  132. }
  133. for(int i=0;i<brojac;i++)
  134. EnQueueQ(pacijenti[i],pacijenti_3);
  135.  
  136. brojac=0;
  137. while(!IsEmptyQ(pacijenti_4))
  138. {
  139. pacijenti[brojac]=FrontQ(pacijenti_4);
  140. cout<<"* Pacijent #"<<pacijenti[brojac].broj
  141. <<"\tPrioritet: "<<pacijenti[brojac].prioritet
  142. <<" Ceka: "<<pacijenti[brojac].cekaonica<<"min"
  143. <<"\tOrdinacija: "<<pacijenti[brojac].ordinacija<<"min"<<endl;
  144. DeQueueQ(pacijenti_4);
  145. brojac++;
  146. }
  147. for(int i=0;i<brojac;i++)
  148. EnQueueQ(pacijenti[i],pacijenti_4);
  149. }
  150. cout<<"* Nema vise pacijenata!"<<endl;
  151. }
  152.  
  153. void simulacija(bool prioriteti=false)
  154. {
  155. vrijeme = clock();
  156. if(!prioriteti)
  157. {
  158. cout<<"\tSimuliram bez prioriteta"<<endl
  159. <<"------------------------------------------"<<endl;
  160. if(IsEmptyQ(pacijenti_x)) cout<<"Red je prazan! Nema pacijenata."<<endl;
  161. _pacijent tekuci;
  162. stanje(false);
  163. while(!IsEmptyQ(pacijenti_x))
  164. {
  165. tekuci=FrontQ(pacijenti_x);
  166. DeQueueQ(pacijenti_x);
  167. ispis(tekuci);
  168. stanje(false);
  169. }
  170. }
  171. else
  172. {
  173. cout<<"\tSimuliram s prioritetima"<<endl
  174. <<"------------------------------------------"<<endl;
  175. bool ima_pacijenata = false;
  176.  
  177. _pacijent tekuci;
  178. stanje();
  179. while(!IsEmptyQ(pacijenti_1))
  180. {
  181. ima_pacijenata = true;
  182. tekuci=FrontQ(pacijenti_1);
  183. DeQueueQ(pacijenti_1);
  184. ispis(tekuci);
  185. stanje();
  186. }
  187. while(!IsEmptyQ(pacijenti_2))
  188. {
  189. ima_pacijenata = true;
  190. tekuci=FrontQ(pacijenti_2);
  191. DeQueueQ(pacijenti_2);
  192. ispis(tekuci);
  193. stanje();
  194. }
  195. while(!IsEmptyQ(pacijenti_3))
  196. {
  197. ima_pacijenata = true;
  198. tekuci=FrontQ(pacijenti_3);
  199. DeQueueQ(pacijenti_3);
  200. ispis(tekuci);
  201. stanje();
  202. }
  203. while(!IsEmptyQ(pacijenti_4))
  204. {
  205. ima_pacijenata = true;
  206. tekuci=FrontQ(pacijenti_4);
  207. DeQueueQ(pacijenti_4);
  208. ispis(tekuci);
  209. stanje();
  210. }
  211. if(!ima_pacijenata) cout<<"Red je prazan! Nema pacijenata."<<endl;
  212. }
  213. cout<<"Vrijeme izvodjenja funkcije: "<<(clock()-vrijeme)<<"ms"<<endl;
  214. };
  215.  
  216. int main()
  217. {
  218. int izbor;
  219. pacijenti_x=new _red;
  220. pacijenti_1=new _red;
  221. pacijenti_2=new _red;
  222. pacijenti_3=new _red;
  223. pacijenti_4=new _red;
  224. InitQ(pacijenti_x);
  225. InitQ(pacijenti_1);
  226. InitQ(pacijenti_2);
  227. InitQ(pacijenti_3);
  228. InitQ(pacijenti_4);
  229. do
  230. {
  231. cout<<endl<<endl<<"Odaberite:"<<endl
  232. <<"\t1. Generiranje pacijenata"<<endl
  233. <<"\t2. Simulacija bez prioriteta"<<endl
  234. <<"\t3. Simulacija s prioritetima"<<endl
  235. <<"\t4. Postavi brzinu simulacije (trenutno: 1 minuta = "<<sim_len<<"ms)"<<endl
  236. <<"\t0. Kraj programa"<<endl
  237. <<"> Vas izbor? ";
  238. cin>>izbor;
  239. switch(izbor)
  240. {
  241. case 0:
  242. return EXIT_SUCCESS;
  243. case 1:
  244. generiranje();
  245. break;
  246. case 2:
  247. simulacija(false);
  248. break;
  249. case 3:
  250. simulacija(true);
  251. break;
  252. case 4:
  253. cout<<"> Duljina simulacije minute u milisekundama? (Trenutno: "<<sim_len<<"ms) ";
  254. cin>>sim_len;
  255. default:
  256. break;
  257. }
  258. } while(true);
  259. }

Report this snippet  

You need to login to post a comment.