Posted By

anovoselnik on 12/03/11


Tagged

strukturepodataka


Versions (?)

Main


 / Published in: C++
 

Main program

  1. #include <iostream>
  2. #include <ctime>
  3. #include "red_pokazivac.h"
  4. using namespace std;
  5. osoba polje[1000], gpolje[1000];
  6. int broj=0;
  7. clock_t vrijeme1, vrijeme2;
  8. void gen () {
  9. cout << "\nUnesite broj generirajucih parova: ";
  10. do cin >> broj; while (broj<1 || broj>10000);
  11. osoba b;
  12. for (int i=0; i<broj; i++) {
  13. b.a=rand()%4+1;
  14. b.x=rand()%10000+1;
  15. b.y=rand()%10000+1;
  16. gpolje[i]=b;
  17. }
  18. cout << "\nZapisi su uspjesno dodani u polje.\n";
  19. system ("pause");
  20. }
  21. int provjera (int a, int br) {
  22. if (!br) return -1;
  23. int broj=-1;
  24. for (int i=0; i<br; i++) {
  25. if (FrontQ(red).a>a && broj<0) broj=i;
  26. EnQueueQ(FrontQ(red), red);
  27. DeQueueQ(red);
  28. }
  29. if (broj>=0) return broj;
  30. return -1;
  31. }
  32. void sim (bool w) {
  33. for (int i=0; i<broj; i++) polje[i]=gpolje[i];
  34. vrijeme1=clock();
  35. if (!broj) {
  36. cout << "\nPolje je prazno!\n";
  37. system ("pause");
  38. return;
  39. }
  40. int a=0, br=0, mjesto;
  41. osoba ord;
  42. cout << endl;
  43. while (a<broj || !IsEmptyQ(red)) {
  44. if (!a) {
  45. ord=polje[a];
  46. a++;
  47. cout << "Prva osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena.";
  48. if (w) cout << "\nNjezin prioritet je " << ord.a << ".";
  49. }
  50. else if (a<broj) {
  51. if (ord.y>polje[a].x) {
  52. ord.y-=polje[a].x;
  53. cout << "Nova osoba je usla u cekaonicu.";
  54. if (!w) EnQueueQ(polje[a], red);
  55. else {
  56. cout << " Njezin prioritet je " << polje[a].a << ".";
  57. mjesto=provjera(polje[a].a, br);
  58. if (mjesto>=0) {
  59. provjera(5, mjesto);
  60. EnQueueQ(polje[a], red);
  61. provjera(5, br-mjesto);
  62. if (mjesto) cout << "\nOsoba je preskocila " << br-mjesto << " osoba/e u redu jer ima veci prioritet.";
  63. else cout << "\nOsoba je dosla na celo reda jer ima najveci prioritet.";
  64. }
  65. else EnQueueQ(polje[a], red);
  66. }
  67. br++;
  68. a++;
  69. cout << "\nU cekaonici je trenutno " << br << " osoba.";
  70. cout << "\nOsoba u ordinaciji ce biti tamo jos " << ord.y << " jedinica vremena.";
  71. }
  72. else if (ord.y<polje[a].x) {
  73. polje[a].x-=ord.y;
  74. if (IsEmptyQ(red)) {
  75. ord=polje[a];
  76. a++;
  77. }
  78. else {
  79. ord=FrontQ(red);
  80. DeQueueQ(red);
  81. br--;
  82. }
  83. cout << "Nova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena.";
  84. if (w) cout << "\nNjezin prioritet je " << ord.a << ".";
  85. cout << "\nU cekaonici je trenutno " << br << " osoba.";
  86. }
  87. else {
  88. cout << "Nova osoba je usla u cekaonicu.";
  89. if (!w) EnQueueQ(polje[a], red);
  90. else {
  91. cout << " Njezin prioritet je " << polje[a].a << ".";
  92. mjesto=provjera(polje[a].a, br);
  93. if (mjesto>=0) {
  94. provjera(5, mjesto);
  95. EnQueueQ(polje[a], red);
  96. provjera(5, br-mjesto);
  97. if (mjesto) cout << "\nOsoba je preskocila " << br-mjesto << " osoba/e u redu jer ima veci prioritet.";
  98. else cout << "\nOsoba je dosla na celo reda jer ima najveci prioritet.";
  99. }
  100. else EnQueueQ(polje[a], red);
  101. }
  102. a++;
  103. ord=FrontQ(red);
  104. DeQueueQ(red);
  105. cout << "\nNova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena.";
  106. if (w) cout << "\nNjezin prioritet je " << ord.a << ".";
  107. cout << "\nU cekaonici je trenutno " << br << " osoba.";
  108. }
  109. }
  110. else {
  111. ord=FrontQ(red);
  112. DeQueueQ(red);
  113. cout << "Nova osoba je usla u ordinaciju. Bit ce tamo " << ord.y << " jedinica vremena.";
  114. br--;
  115. if (w) cout << "\nNjezin prioritet je " << ord.a << ".";
  116. cout << "\nU cekaonici je trenutno " << br << " osoba.";
  117. }
  118. cout << "\n\n------------------\n";
  119. system ("pause");
  120. cout << "------------------\n\n";
  121. }
  122. vrijeme2=clock();
  123. cout << "-*-Simulacija je gotova.-*-\n";
  124. system ("pause");
  125. }
  126. void vrijeme () {
  127. cout << "\nZadnja simulacija je trajala " << (float)(vrijeme2-vrijeme1)/1000 << " sekundi.\n";
  128. system ("pause");
  129. }
  130. int main () {
  131. InitQ(red);
  132. int a;
  133. srand(time(0));
  134. rand();
  135. do {
  136. system ("cls");
  137. cout << "1. Generiranje niza parova\n";
  138. cout << "2. Simulacija cekaonice ordinacije\n";
  139. cout << "3. Simulacija cekaonice ordinacije sa prioritetom\n";
  140. cout << "4. Ispis vremena trajanja zadnje simulacije\n";
  141. cout << "0. Izlaz iz programa\n";
  142. cout << "Unesite izbor: ";
  143. do cin >> a; while (a<0 || a>4);
  144. switch (a) {
  145. case 1: gen(); break;
  146. case 2: sim(false); break;
  147. case 3: sim(true); break;
  148. case 4: vrijeme();
  149. }
  150. } while (a);
  151. return 0;
  152. }

Report this snippet  

You need to login to post a comment.