Posted By


boki567 on 12/13/11

Tagged


Statistics


Viewed 654 times
Favorited by 0 user(s)

glavni_program_bonikolic


/ Published in: C++
Save to your folder(s)

Glavni program zadatka 3


Copy this code and paste it in your HTML
  1. #include <iostream>
  2. #include <ctime>
  3. #include "polje_red.h"
  4.  
  5. using namespace std;
  6.  
  7. pacijent pacijenti[10000];
  8. int broj=0;
  9. clock_t vrij_poc, vrij_kraj;
  10.  
  11. void generiraj () {
  12. cout << "Unesite broj parova koje zelite generirati: "<<endl;
  13. do cin >> broj; while (broj<1 || broj>10000);
  14. pacijent pac;
  15. for (int i=0; i<broj; i++) {
  16. pac.prior=rand()%4+1;
  17. pac.x=rand()%10000+1;
  18. pac.y=rand()%10000+1;
  19. pacijenti[i]=pac;
  20. }
  21. cout<<"---------------------------------"<<endl;
  22.  
  23. cout << "Zapisi su uspjesno zapisani"<<endl;;
  24. cout<<"---------------------------------"<<endl;
  25. system ("pause");
  26. }
  27. int provjera (int a, int br) {
  28. if (!br) return -1;
  29. int broj=-1;
  30. for (int i=0; i<br; i++) {
  31. if (FrontQ(red).prior>a && broj<0) broj=i;
  32. EnQueueQ(FrontQ(red), red);
  33. DeQueueQ(red);
  34. }
  35. if (broj>=0) return broj;
  36. return -1;
  37. }
  38. void simulacija1 (bool w) {
  39. vrij_poc=clock();
  40. if (!broj) {
  41. cout<<"---------------------------------"<<endl;
  42. cout << "Polje je prazno!"<<endl;
  43. cout<<"---------------------------------"<<endl;
  44. system ("pause");
  45. return;
  46. }
  47. int a=0, brojac=0, mjesto;
  48. pacijent pct;
  49. cout << endl;
  50. while (a<broj || !IsEmptyQ(red)) {
  51. if (!a) {
  52. pct=pacijenti[a];
  53. a++;
  54. cout<<"---------------------------------"<<endl;
  55. cout << "Prvi pacijent je u ordinaciji. Tamo ce biti " << pct.y << " vremena."<<endl;
  56. if (w) cout << "\nOn ima prioritet broj " << pct.prior << ".";
  57. cout<<"---------------------------------"<<endl;}
  58.  
  59. else if (a<broj) {
  60. if (pct.y>pacijenti[a].x) {
  61. pct.y-=pacijenti[a].x;
  62. cout << "Novi pacijent je u cekaonici."<<endl;
  63. if (!w) EnQueueQ(pacijenti[a], red);
  64. else {
  65. cout << " On ima prioritet broj " << pacijenti[a].prior << "."<<endl;
  66. mjesto=provjera(pacijenti[a].prior, brojac);
  67. if (mjesto>=0) {
  68. provjera(5, mjesto);
  69. EnQueueQ(pacijenti[a], red);
  70. provjera(5, brojac-mjesto);
  71. if (mjesto) cout << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl;
  72. else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;}
  73. else EnQueueQ(pacijenti[a], red);
  74. }
  75. brojac++;
  76. a++;
  77. cout<<"---------------------------------"<<endl;
  78. cout << "U cekaonici su/je " << brojac << " pacijenta."<<endl;
  79. cout << "Pacijent ce biti u ordinaciji jos " << pct.y << " jedinica vremena.<<endl";
  80. cout<<"---------------------------------"<<endl;
  81. }
  82. else if (pct.y<pacijenti[a].x) {
  83. pacijenti[a].x-=pct.y;
  84. if (IsEmptyQ(red)) {
  85. pct=pacijenti[a];
  86. a++;}
  87. else {
  88. pct=FrontQ(red);
  89. DeQueueQ(red);
  90. brojac--;}
  91. cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena."<<endl;
  92. if (w) cout << "On ima prioritet broj " << pct.prior << "."<<endl;
  93. cout << "U cekaonici su/je: " << brojac << " pacijenta."<<endl;}
  94. else {
  95. cout << "Novi pacijent je usao u cekaonicu."<<endl;
  96. if (!w) EnQueueQ(pacijenti[a], red);
  97. else {
  98. cout << " On ima prioritet: " << pacijenti[a].prior << "."<<endl;
  99. mjesto=provjera(pacijenti[a].prior, brojac);
  100. if (mjesto>=0) {
  101. provjera(5, mjesto);
  102. EnQueueQ(pacijenti[a], red);
  103. provjera(5, brojac-mjesto);
  104. if (mjesto) cout << "Pacijent je preskocio " << brojac-mjesto << " pacijenta u redu zbog veceg prioriteta."<<endl;
  105. else cout << "Pacijent je dosao na celo reda zbog najveceg prioriteta."<<endl;}
  106. else EnQueueQ(pacijenti[a], red);}
  107. a++;
  108. pct=FrontQ(red);
  109. DeQueueQ(red);
  110. cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti " << pct.y << " vremena."<<endl;
  111. if (w) cout << "On ima prioritet broj: " << pct.prior << "."<<endl;
  112. cout << "U cekaonici je:" << brojac << " osoba."<<endl;
  113. }
  114. }
  115. else {
  116. pct=FrontQ(red);
  117. DeQueueQ(red);
  118. cout << "Novi pacijent je usao u ordinaciju. Tamo ce biti: " << pct.y << " vremena."<<endl;
  119. brojac--;
  120. if (w) cout << "\nOn ima prioritet broj: " << pct.prior << "."<<endl;
  121. cout << "\nU cekaonici su/je: " << brojac << " pacijenta."<<endl;
  122. }
  123. cout << "---------------------------------"<<endl;
  124. system ("pause");
  125. cout << "---------------------------------";
  126. }
  127. vrij_kraj=clock();
  128. cout<<"---------------------------------"<<endl;
  129. cout << "Zavrsena simulacija."<<endl;
  130. cout<<"---------------------------------"<<endl;
  131. system ("pause");}
  132. void potr_vrij () {
  133. cout<<"---------------------------------"<<endl;
  134. cout << "\nPosljednja simulacija je trajala " << (float)(vrij_kraj-vrij_poc)/1000 << " sekundi."<<endl;
  135. cout<<"---------------------------------"<<endl;
  136. system ("pause");
  137. }
  138. int main () {
  139. InitQ(red);
  140. int izbor;
  141. srand(time(0));
  142. rand();
  143. do {
  144. system ("cls");
  145. cout << "1. Generiranje parova"<<endl;
  146. cout << "2. Simuliranje cekaonice ordinacije"<<endl;
  147. cout << "3. Simuliranje cekaonice ordinacije sa prioritetom"<<endl;
  148. cout << "4. Vrijeme trajanja zadnje simulacije"<<endl;
  149. cout << "0. Izlaz"<<endl;
  150. cout << "Vas izbor: ";
  151. do cin >> izbor; while (izbor<0 || izbor>4);
  152. switch (izbor) {
  153. case 1: {
  154. generiraj(); break;
  155. }
  156. case 2: {
  157. simulacija1(false); break;
  158. }
  159. case 3: {
  160. simulacija1(true); break;
  161. }
  162. case 4: {
  163. potr_vrij();
  164. }
  165. }
  166. } while (izbor);
  167. return 0;
  168. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.