Posted By

perogina on 12/03/11


Tagged

red 3 Strukture podataka zadatak


Versions (?)

Main dio zadatka 3


 / Published in: C++
 

Zadatak 3, strukture podataka

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

Report this snippet  

You need to login to post a comment.