Posted By

deslunjsk on 12/03/11


Tagged

red program pokazivac polje glavni implementacija


Versions (?)

glavni program


 / Published in: C++
 

implementacija glavnog programa

  1. #include<iostream>
  2. #include<ctime>
  3. #include<windows.h>
  4. #include<winbase.h>
  5.  
  6. using namespace std;
  7.  
  8. struct tpacijent {
  9. int x;
  10. int y;
  11. int rizik;
  12. };
  13. #include "red_polje.h"
  14. int N, br=0;
  15. tpacijent* generiranje() {
  16. cout << "Koliko parova zelite generirati: ";
  17. cin >> N;
  18. cout << endl;
  19. tpacijent *pacijent = new tpacijent[N];
  20. for (int i=0;i<N;i++) {
  21. cout << "Generiranje " << i+1 << ". para brojeva" << endl;
  22. pacijent[i].x = rand()%10000+1;
  23. pacijent[i].y = rand()%10000+1;
  24. }
  25. return pacijent;
  26. };
  27. void ispis(red* Q, int izbor) {
  28. tpacijent pom;
  29. cout << endl;
  30. for (int i=0; i<br; i++) {
  31. pom = FrontQ(Q);
  32. DeQueueQ(Q);
  33. cout << "\t" << i+1 << ". pacijent u redu-------------------------" << endl
  34. << "\t" << "Dosao je " << pom.x /1000.0 << " jedinica vremena nakon prethodnoga " << endl
  35. << "\t" << "Treba " << pom.y /1000.0 << " jedinica vremena u ordinaciji " << endl;
  36. if (izbor == 1)
  37. cout << "\t" << "Razina rizika " << pom.rizik << endl;
  38. EnQueueQ(pom,Q);
  39. }
  40. cout << endl;
  41. }
  42.  
  43. void posluzi(red* Q, tpacijent pacijent[]) {
  44. int vrijeme_pocetak, vrijeme_kraj;
  45. tpacijent ordinacija;
  46. int ukupno = N;
  47. br = 0;
  48. vrijeme_pocetak = time(NULL);
  49. EnQueueQ(pacijent[0],Q); br++;
  50. for (int i=0;i<N;i++) {
  51. ordinacija = FrontQ(Q);
  52. DeQueueQ(Q); br--;
  53. ukupno--;
  54. cout << i+1 << ". pacijent ulazi u ordinaciju na " << ordinacija.y/1000.0 << " jedinica vremena" << endl;
  55. Sleep(ordinacija.y);
  56. int sat=0;
  57. for (int j=i+1+br;j<N;j++) {
  58. sat = sat + pacijent[j].x;
  59. if(sat < ordinacija.y) {
  60. cout << "Novi pacijent je dosao u meduvremenu" << endl;
  61. EnQueueQ(pacijent[j],Q);
  62. br++;
  63. }
  64. else break;
  65. }
  66. cout << i+1 << ". pacijent izlazi iz ordinacije" << endl;
  67. cout << "Stanje reda: ";
  68. if (IsEmptyQ(Q)) {
  69. cout << "Cekaonica je trenutno prazna" << endl << endl;
  70. if (ukupno == 0) {
  71. vrijeme_kraj = time(NULL);
  72. cout << "Proteklo vrijeme = " << vrijeme_kraj - vrijeme_pocetak << endl;
  73. return;
  74. }
  75. int razlika = pacijent[i+1].x - ordinacija.y;
  76. Sleep(razlika);
  77. EnQueueQ(pacijent[i+1],Q);
  78. br++;
  79. }
  80. else ispis(Q,0);
  81. }
  82. }
  83.  
  84. void prioritet(tpacijent pacijent[]) {
  85. for (int i=0;i<N;i++) {
  86. cout << "Generiram prioritet " << i+1 << ". pacijentu" << endl;
  87. pacijent[i].rizik = rand()%4+1;
  88. }
  89. cout << endl;
  90. };
  91.  
  92. void preslozi (red *Q, int rizik) {
  93. red* P = InitQ(P);
  94. tpacijent pom;
  95. for (int i=0; i<br; i++) {
  96. pom = FrontQ(Q);
  97. DeQueueQ(Q);
  98. if(pom.rizik == rizik)
  99. EnQueueQ(pom,Q);
  100. else
  101. EnQueueQ(pom,P);
  102. }
  103. while(!IsEmptyQ(P)){
  104. pom = FrontQ(P);
  105. DeQueueQ(P);
  106. EnQueueQ(pom,Q);
  107. }
  108. };
  109.  
  110. void posluzi2(red* Q, tpacijent pacijent[]) {
  111. int vrijeme_pocetak, vrijeme_kraj;
  112. tpacijent ordinacija, ceka;
  113. int ukupno = N;
  114. br = 0;
  115. vrijeme_pocetak = time(NULL);
  116. EnQueueQ(pacijent[0],Q); br++;
  117. for (int i=0;i<N;i++) {
  118. ordinacija = FrontQ(Q);
  119. DeQueueQ(Q); br--;
  120. ukupno--;
  121. cout << i+1 << ". pacijent ulazi u ordinaciju na " << ordinacija.y/1000.0 << " jedinica vremena" << endl;
  122. Sleep(ordinacija.y);
  123. int sat=0;
  124. for (int j=i+1+br;j<N;j++) {
  125. sat = sat + pacijent[j].x;
  126. if(sat < ordinacija.y) {
  127. cout << "Novi pacijent je dosao u meduvremenu" << endl;
  128. EnQueueQ(pacijent[j],Q);
  129. br++;
  130. preslozi(Q,1);
  131. preslozi(Q,2);
  132. preslozi(Q,3);
  133. preslozi(Q,4);
  134. }
  135. else break;
  136. }
  137. cout << i+1 << ". pacijent izlazi iz ordinacije" << endl;
  138. cout << "Stanje reda: ";
  139. if (IsEmptyQ(Q)) {
  140. cout << "Cekaonica je trenutno prazna" << endl << endl;
  141. if (ukupno == 0) {
  142. vrijeme_kraj = time(NULL);
  143. cout << "Proteklo vrijeme = " << vrijeme_kraj - vrijeme_pocetak << endl;
  144. return;
  145. }
  146. int razlika = pacijent[i+1].x - ordinacija.y;
  147. Sleep(razlika);
  148. EnQueueQ(pacijent[i+1],Q);
  149. br++;
  150. preslozi(Q,1);
  151. preslozi(Q,2);
  152. preslozi(Q,3);
  153. preslozi(Q,4);
  154. }
  155. else ispis(Q,1);
  156. }
  157. }
  158.  
  159. int main () {
  160. int izbor, broj_klijenata=0, umanji;
  161. tpacijent *pacijent;
  162. red* Q = InitQ(Q);
  163. do {
  164. cout<<endl;
  165. cout<< "------------------- IZBORNIK ------------------" << endl;
  166. cout<< "1. Generiranje polja" << endl;
  167. cout<< "2. <Odre�ivanje vremena za pacijente" << endl;
  168. cout<< "3. Odre�ivanje prioriteta" << endl;
  169. cout<< "9. Izlaz" << endl;
  170. cout<< "Vas izbor: ";
  171. cin >> izbor;
  172. cout << endl;
  173. switch (izbor) {
  174.  
  175. case 1:
  176. pacijent = generiranje();
  177. cout << endl;
  178. break;
  179.  
  180. case 2:
  181. posluzi(Q, pacijent);
  182. cout << endl;
  183. break;
  184.  
  185. case 3:
  186. prioritet(pacijent);
  187. posluzi2(Q, pacijent);
  188. cout << endl;
  189. break;
  190.  
  191. case 9:
  192. break;
  193. }
  194.  
  195. } while (izbor!=9);
  196. system("pause");
  197. return 0;
  198. }

Report this snippet  

You need to login to post a comment.