Posted By

mlcorak on 12/03/11


Tagged

sp program


Versions (?)

A,C,D dio programa


 / Published in: C++
 

a,c,d dio glavnog programa

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. using namespace std;
  5. #include "racunanje_vremena.cpp"
  6. struct cpacijent{
  7. int cekanje;
  8. int obrada;
  9. int vaznost;
  10. int rbr;
  11. int gotov;
  12. }pacijent[10000] , tmp;
  13.  
  14. typedef cpacijent elementtype;
  15.  
  16. #include "red_cirkularno_polje.h"
  17. //#include "red_pokazivaci.h"
  18.  
  19. void generiranje (int i, int n, elementtype pacijent[]){
  20. for (i = 0 ; i < n ; i++){
  21. pacijent[i].cekanje = rand()%1000 +1;
  22. pacijent[i].obrada = rand()%1000 +1;
  23. pacijent[i].vaznost = rand()%4 + 1;
  24. pacijent[i].rbr = i + 1;
  25. pacijent[i].gotov = 0;
  26. cout << pacijent[i].rbr << "\t\t" << pacijent[i].cekanje << " \t\t" << pacijent[i].obrada << "\t\t\t" << pacijent[i].vaznost << endl;
  27. }
  28. }
  29. int main(){
  30. vrijeme_pocetak();
  31. srand((unsigned)time(NULL));
  32. int n , i , br = 0 , br2 = 0 , k = 1 , j;
  33.  
  34. queue *red1 , *red2, *red3, *red4;
  35. red1 = new queue;
  36. red2 = new queue;
  37. red3 = new queue;
  38. red4 = new queue;
  39.  
  40. InitQ(red1);
  41. InitQ(red2);
  42. InitQ(red3);
  43. InitQ(red4);
  44.  
  45. cout << "*****************************************" << endl;
  46. cout << "*\t\tDOBRODOSLI\t\t*" << endl;
  47. cout << "* Program simulira rad hitne sluzbe *" << endl;
  48. cout << "*****************************************" << endl;
  49.  
  50. do{
  51. cout << "\nSimulaciju sa koliko pacijenata zelite R:(max 10000)? ";
  52. cin >> n;
  53. if (n>10000 || n<0) cout<<"\nUnos mora bi u rasponu izmedu 0-10000. Ponovite unos";
  54. } while (n>10000 || n<0);
  55.  
  56. cout << "\n***************************************************************";
  57. cout << "\nBroj_pacijenta\tCekanje\t\tVrijeme_obrade\t\tHitnost"<< endl;
  58.  
  59. generiranje (i,n,pacijent);
  60.  
  61. cout << "\n***************************************************************\n";
  62. cout<<"Pacijenti kako dolaze na hitnu smijestaju se prema hitnosti u jedan \n od cetiri reda (red (1),red (2),red (3),red (4))";
  63. cout<<" kako bi se postivalo pravilo \nda pacijenti sa visim prioritetom dodu prije na red."<<endl;
  64. cout<<"red (1) => Kriticni slucajevi \nred (2) => Rizicni slucajevi\nred (3) => Slucajevi niskog rizika\nred (4) => Slucajevi koji nisu hitni";
  65. cout << "\n***************************************************************\n\n";
  66. for(i = 0 ; i < n; i++){
  67.  
  68. if (pacijent[i].vaznost == 1 && pacijent[i].gotov == 0){
  69. if(IsEmptyQ(red1)){
  70. while(br < pacijent[i].cekanje){
  71. br++;
  72. br2++;
  73. }
  74. br=0;
  75. EnQueueQ(pacijent[i] , red1);
  76. cout << pacijent[i].rbr << ". pacijent ulazi u red (1)" << endl;
  77. }
  78. }
  79. if (pacijent[i].vaznost == 2 && pacijent[i].gotov == 0){
  80. if(IsEmptyQ(red2)){
  81. while(br < pacijent[i].cekanje){
  82. br++;
  83. br2++;
  84. }
  85. br=0;
  86. EnQueueQ(pacijent[i] , red2);
  87. cout << pacijent[i].rbr << ". pacijent ulazi u red (2)" << endl;
  88. }
  89. }
  90. if (pacijent[i].vaznost == 3 && pacijent[i].gotov == 0){
  91. if(IsEmptyQ(red3)){
  92. while(br < pacijent[i].cekanje){
  93. br++;
  94. br2++;
  95. }
  96. br=0;
  97. EnQueueQ(pacijent[i] , red3);
  98. cout << pacijent[i].rbr << ". pacijent ulazi u red (3)" << endl;
  99. }
  100. }
  101. if (pacijent[i].vaznost == 4 && pacijent[i].gotov == 0){
  102. if(IsEmptyQ(red4)){
  103. while(br < pacijent[i].cekanje){
  104. br++;
  105. br2++;
  106. }
  107. br=0;
  108. EnQueueQ(pacijent[i] , red4);
  109. cout << pacijent[i].rbr << ". pacijent ulazi u red (4)" << endl;
  110. }
  111. }
  112.  
  113. cout << "Proteklo " << br2 << " vremenskih jedinica." << endl;
  114.  
  115. if (k > 1) k--;
  116. if (IsEmptyQ(red1)){
  117. if (IsEmptyQ(red2)){
  118. if (IsEmptyQ(red3)){
  119. tmp = FrontQ(red4);
  120. DeQueueQ(red4);
  121. }
  122. else{
  123. tmp = FrontQ(red3);
  124. DeQueueQ(red3);
  125. }
  126. }
  127. else{
  128. tmp = FrontQ(red2);
  129. DeQueueQ(red2);
  130. }
  131. }
  132. else{
  133. tmp = FrontQ(red1);
  134. DeQueueQ(red1);
  135. }
  136.  
  137. cout << tmp.rbr << ". pacijent ulazi u ordinaciju." << endl;
  138.  
  139.  
  140. if (IsEmptyQ(red1)) cout<<"Red (1) je prazan."<<endl;
  141. else cout << "Na celu reda (1) je " << FrontQ(red1).rbr <<". pacijent " << endl;
  142.  
  143. if (IsEmptyQ(red2)) cout << "Red (2) je prazan" << endl;
  144. else cout << "Na celu reda (2) je " << FrontQ(red2).rbr <<". pacijent "<< endl;
  145.  
  146. if (IsEmptyQ(red3)) cout << "Red (3) je prazan" << endl;
  147. else cout << "Na celu reda (3) je " << FrontQ(red3).rbr <<". pacijent "<< endl;
  148.  
  149. if (IsEmptyQ(red4)) cout << "Red (4) je prazan" << endl;
  150. else cout << "Na celu reda (4) je " << FrontQ(red4).rbr <<". pacijent "<< endl;
  151.  
  152. tmp.gotov = 1;
  153.  
  154. for(j = 0 ; j < tmp.obrada ; j++){
  155. br++;
  156. br2++;
  157. if((i + k < n) && (br == pacijent[i+k].cekanje)){
  158. if (pacijent[i+k].vaznost == 1){
  159. EnQueueQ(pacijent[i+k] , red1);
  160. pacijent[i+k].gotov=1;
  161. cout << "Nakon " << j+1 << ". jedinice vremena, "<<i+k+1 << ". pacijent ulazi u red (1)." <<endl;
  162. }
  163. if (pacijent[i+k].vaznost == 2){
  164. EnQueueQ(pacijent[i+k] , red2);
  165. pacijent[i+k].gotov=1;
  166. cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (2)." <<endl;
  167. }
  168. if (pacijent[i+k].vaznost == 3){
  169. EnQueueQ(pacijent[i+k] , red3);
  170. pacijent[i+k].gotov=1;
  171. cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (3)." <<endl;
  172. }
  173. if (pacijent[i+k].vaznost == 4){
  174. EnQueueQ(pacijent[i+k] , red4);
  175. pacijent[i+k].gotov=1;
  176. cout << "Nakon " << j+1 << ". jedinice vremena, "<< i+k+1<< ". pacijent ulazi u red (4)." <<endl;
  177. }
  178. br = 0;
  179. k++;
  180. }
  181. }
  182. cout << tmp.rbr << ". pacijent izlazi iz ordinacije" << endl;
  183. cout << "Proteklo jedinica: " << br2 << endl << endl;
  184. }
  185.  
  186. while(!IsEmptyQ(red4)){
  187. cout <<FrontQ(red4).rbr<< ". pacijent ulazi u ordinaciju." << endl;
  188. cout<<"Red (1) je prazan."<<endl;
  189. cout<<"Red (2) je prazan."<<endl;
  190. cout<<"Red (3) je prazan"<<endl;
  191. tmp = FrontQ(red4);
  192. DeQueueQ(red4);
  193. if (IsEmptyQ(red4)) cout << "Red (4) je prazan" << endl;
  194. else cout << "Na celu reda (4) je " << FrontQ(red4).rbr << endl;
  195. cout <<tmp.rbr<< ". pacijent izlazi iz ordinacije" << endl;
  196. cout << "Proteklo jedinica: " << br2+tmp.obrada << endl << endl;
  197. };
  198. vrijeme_kraj();
  199. cout<<"Stvarno vrijeme trajanja programa je "<<vrijeme_proteklo() <<"milisekundi"<<endl;
  200. system ("pause");
  201. return 0;
  202. }

Report this snippet  

You need to login to post a comment.