Posted By

mezestic1 on 12/02/11


Tagged


Versions (?)

3_zadatak


 / Published in: C++
 

glavni program

  1. #include <iostream>
  2. #include <cstdlib>
  3. #include <ctime>
  4. //#include "red_polje.h"
  5. #include "red_pokazivac.h"
  6.  
  7. using namespace std;
  8.  
  9. void prikaz_stanja(queue * Q){
  10. queue * pomQ = new queue;
  11. InitQ(pomQ);
  12. system("cls");
  13. while(!IsEmptyQ(Q)){
  14. cout << "Pacijent " << FrontQ(Q).redBr << endl;
  15. EnQueueQ(FrontQ(Q), pomQ);
  16. DeQueueQ(Q);
  17. }
  18. while(!IsEmptyQ(pomQ)){
  19. EnQueueQ(FrontQ(pomQ), Q);
  20. DeQueueQ(pomQ);
  21. }
  22. }
  23.  
  24. void cekaonica(queue * Q, Par * pacijenti, int brojPacijenta, int izbor){
  25. if (izbor==9) return;
  26. Vrijeme * vrijeme = new Vrijeme;
  27. queue * pomQ = new queue;
  28. InitQ(pomQ);
  29. bool ubacen;
  30. clock_t vrijemePrethodni=clock();
  31. clock_t vrKodDoktora=0;
  32.  
  33. vrijeme->vrijemePocetak();
  34. system("cls");
  35. for (int i=0; i<brojPacijenta ; i++){
  36. while(clock()<pacijenti[i].x+vrijemePrethodni) {
  37.  
  38. if(!IsEmptyQ(Q) && vrKodDoktora+FrontQ(Q).y<clock()) {
  39. DeQueueQ(Q);
  40. prikaz_stanja(Q);
  41. if (!IsEmptyQ(Q)) vrKodDoktora=clock();
  42. }
  43. }
  44. ubacen=false;
  45. if(izbor==2){
  46. if(!IsEmptyQ(Q)){
  47. EnQueueQ(FrontQ(Q), pomQ);
  48. DeQueueQ(Q);
  49. }
  50. while(!IsEmptyQ(Q)){
  51. if (FrontQ(Q).z>pacijenti[i].z && !ubacen) {
  52. ubacen=true;
  53. EnQueueQ(pacijenti[i], pomQ);
  54. }
  55. EnQueueQ(FrontQ(Q), pomQ);
  56. DeQueueQ(Q);
  57. }
  58. if (!ubacen) EnQueueQ(pacijenti[i], pomQ);
  59. while (!IsEmptyQ(pomQ)){
  60. EnQueueQ(FrontQ(pomQ), Q);
  61. DeQueueQ(pomQ);
  62. }
  63. }else EnQueueQ(pacijenti[i], Q);
  64.  
  65. prikaz_stanja(Q);
  66. vrijemePrethodni=clock();
  67. if (FrontQ(Q).x==pacijenti[i].x) vrKodDoktora=clock();
  68. }
  69.  
  70. while(1){
  71. if(!IsEmptyQ(Q) && vrKodDoktora+FrontQ(Q).y<clock()) {
  72. DeQueueQ(Q);
  73. if (!IsEmptyQ(Q)) vrKodDoktora=clock();
  74. }
  75. if(clock()%100==0 || IsEmptyQ(Q)) prikaz_stanja(Q);
  76. if (IsEmptyQ(Q)) break;
  77. }
  78. vrijeme->vrijemeKraj();
  79. cout << "Vrijeme trajanja programa: " << vrijeme->vrijemeProteklo()/1000 << " sec\n\n";
  80. system("pause");
  81. system("cls");
  82. }
  83.  
  84. int main(){
  85. int brojPacijenta, izbor;
  86. queue * Q = new queue;
  87. InitQ(Q);
  88. srand(time(0));
  89. rand();
  90.  
  91. cout << "Unesite broj pacijenta: ";
  92. cin >> brojPacijenta;
  93. Par * pacijenti = new Par[brojPacijenta];
  94.  
  95. for (int i=0; i<brojPacijenta; i++){
  96. pacijenti[i].x = rand()%10000+1;
  97. pacijenti[i].y = rand()%10000+1;
  98. pacijenti[i].redBr = i;
  99. pacijenti[i].z = rand()%4+1;
  100. cout << "Pacijent "<<i<<" prioritet: " << pacijenti[i].z << endl;
  101. }
  102.  
  103. do{
  104. do{
  105. cout << "\nIzbornik:\nZelite li simulaciju cekaonice pacijenata bez(1), ili sa prioritetom(2)?\n";
  106. cout << "Za izlaz odaberite (9)\nIzbor: ";
  107. cin>>izbor;
  108. }while(izbor<1 || (izbor>2 && izbor!=9));
  109.  
  110. cekaonica(Q, pacijenti, brojPacijenta, izbor);
  111.  
  112. }while(izbor!=9);
  113.  
  114. return 0;
  115. }

Report this snippet  

You need to login to post a comment.