Posted By

KarloBatrla on 12/02/11


Tagged


Versions (?)

main


 / Published in: C++
 

main

  1. #include<iostream>
  2. #include<ctime>
  3. #include "red_polje.h"
  4. //#include "red_pokazivac.h"
  5.  
  6. using namespace std;
  7.  
  8. queue *red=new queue;
  9. queue *cekaonica=new queue;
  10.  
  11. tred el;
  12. int Nsum=0;
  13.  
  14. int prvi() {
  15. int N=0;
  16. cout<<"Unesite broj N: ";
  17. cin>>N;
  18. Nsum+=N;
  19. srand(time(NULL));
  20. for (int i=0;i<N;i++) {
  21. el.x=rand()%9999+1;
  22. el.y=rand()%9999+1;
  23. EnQueueQ(el,red);
  24. }
  25.  
  26. cout<<"Izgenerirano je "<<N<<" slucajnih brojeva!\n";
  27. return 0;
  28. }
  29.  
  30. int VrijemeTrajanja(int v) {
  31. cout<<"Vrijeme trajanja: "<<v<<" sec\n";
  32. cout<<"Prosjecno cekanje pacijenta: "<<v/Nsum<<" sec\n";
  33. return 0;
  34. }
  35.  
  36. void drugi() {
  37. int stanje_cekaonica=0, cekanje=0, BrPuo=0, vrijeme=0;
  38. bool PuOrdinaciji=false;
  39. int PomPolje[Nsum];
  40. if (IsEmptyQ(red)) {
  41. cout<<"Red je prazan!\n";
  42. return;
  43. }
  44.  
  45. InitQ(cekaonica);
  46. for (int j=1;j<=Nsum;j++) {
  47. el=FrontQ(red);
  48. stanje_cekaonica++;
  49. DeQueueQ(red);
  50. el.prioritet=short(rand()%4+1);
  51. el.i=j;
  52. vrijeme+=el.x;
  53. PomPolje[j-1]=cekanje;
  54. cout<<"Pacijent br. "<<el.i<<" ulazi u kliniku...\n";
  55. cout<<"Prioritet: ";
  56. if (el.prioritet==1) cout<<"kriticni slucaj\n";
  57. else if (el.prioritet==2) cout<<"rizicni slucaj\n";
  58. else if (el.prioritet==3) cout<<"slucaj niskog rizika\n";
  59. else if (el.prioritet==4) cout<<"nije hitan slucaj\n";
  60. if (stanje_cekaonica>1) {
  61. for (int z=1;z<stanje_cekaonica;z++) {
  62. tred el2=FrontQ(cekaonica), pom;
  63. DeQueueQ(cekaonica);
  64. if (el.i==el2.i) continue;
  65. if (el2.prioritet<el.prioritet||(el2.prioritet==el.prioritet&&el2.i<el.i)) {
  66. pom=el2;
  67. el2=el;
  68. el=pom;
  69. }
  70. EnQueueQ(el2,cekaonica);
  71. }}
  72.  
  73. if (el.i<1||el.i>Nsum) continue;
  74. if (!PuOrdinaciji) {
  75. if (el.i!=1) cout<<"Pacijent br. "<<BrPuo<<" izlazi iz ordinacije i napusta kliniku...\n";
  76. if (stanje_cekaonica>1) cout<<"Pacijent br. "<<el.i<<" je najprioritetniji slucaj u cekaonici!\n";
  77. int PacCeka=cekanje-PomPolje[el.i-1];
  78. if (PacCeka<0) PacCeka=0;
  79. cout<<"Pacijent br. "<<el.i<<" je cekao u redu: "<<PacCeka<<" sec\n";
  80. cout<<"Pacijent ulazi u ordinaciju...\n";
  81. BrPuo=el.i;
  82. if (stanje_cekaonica<=1) InitQ(cekaonica);
  83. cout<<"Stanje u cekaonici: "<<--stanje_cekaonica<<"\n\n";
  84. cekanje-=el.y;
  85. }
  86. else EnQueueQ(el,cekaonica);
  87. cekanje+=el.x;
  88. if (cekanje<0) cekanje=0;
  89. if(cekanje>el.y) PuOrdinaciji=false;
  90. else {
  91. PuOrdinaciji=true;
  92. vrijeme+=(el.x-el.y);
  93. }
  94. }
  95.  
  96. InitQ(red);
  97.  
  98. for (int j=0;j<stanje_cekaonica;) {
  99. el=FrontQ(red);
  100. DeQueueQ(red);
  101. if (stanje_cekaonica>1) {
  102. for (int z=1;z<stanje_cekaonica;z++) {
  103. tred el2=FrontQ(cekaonica), pom;
  104. DeQueueQ(cekaonica);
  105. if (el.i==el2.i) continue;
  106. if (el2.prioritet<el.prioritet||(el2.prioritet==el.prioritet&&el2.i<el.i)) {
  107. pom=el2;
  108. el2=el;
  109. el=pom;
  110. }
  111. EnQueueQ(el2,cekaonica);
  112. }
  113. }
  114. if (el.i<1||el.i>Nsum)continue;
  115. if (stanje_cekaonica>1) {
  116. cout<<"Pacijent br. "<<BrPuo<<" izlazi iz ordinacije i napusta kliniku...\n";
  117. cout<<"Pacijent br. "<<el.i<<" je najprioritetniji slucaj u cekaonici!\n";
  118. }
  119. int PacCeka=cekanje-PomPolje[el.i-1];
  120. if (PacCeka<0) PacCeka=0;
  121. cout<<"Pacijent br. "<<el.i<<" je cekao u redu: "<<PacCeka<<" sec\n";
  122. cout<<"Pacijent ulazi u ordinaciju...\n";
  123. BrPuo=el.i;
  124. if (stanje_cekaonica<=1) InitQ(cekaonica);
  125. cout<<"Stanje u cekaonici: "<<--stanje_cekaonica<<"\n\n";
  126. cekanje+=el.x;
  127. vrijeme+=el.y;
  128. }
  129. cout<<"Pacijent br. "<<el.i<<" izlazi iz ordinacije i napusta kliniku...\n";
  130. VrijemeTrajanja(vrijeme);
  131. Nsum=0;
  132. }
  133.  
  134.  
  135. int main() {
  136. InitQ(red);
  137. int izbor=0;
  138.  
  139. do {
  140. cout<<"\t\tIZBORNIK\n";
  141. cout<<"1. Generiranje N parova slucajnih brojeva\n";
  142. cout<<"2. Pacijenti u ordinaciji\n";
  143. cout<<"9. Izlaz iz programa\n";
  144. cin>>izbor;
  145.  
  146. switch(izbor) {
  147. case 1:
  148. prvi();
  149. break;
  150. case 2:
  151. drugi();
  152. break;
  153. case 9:
  154. break;
  155. }
  156. }while(izbor!=9);
  157. return 0;
  158. }

Report this snippet  

You need to login to post a comment.