Cekaonica i pacjenti - Glavni program


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

Vedran Vađunec


Copy this code and paste it in your HTML
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>
  4. #include "biblioteka_vrijeme.cc"
  5.  
  6. #include "red_polje.h"
  7. // #include "red_pokazivac.h"
  8.  
  9. using namespace std;
  10. int broj;
  11. void izbornik(){
  12.  
  13. system("cls");
  14. cout<<"---Simulacija rada ordinacije------"<<endl;
  15. cout<<"---------Izbornik---------"<<endl;
  16. cout<<"1. Generiranje pacijenata."<<endl;
  17. cout<<"2. Simulacija cekaonice BEZ obzira na prioritet."<<endl;
  18. cout<<"3. Simulacija cekaonice SA obzira na prioritet."<<endl;
  19. cout<<"9. Izlaz"<<endl;
  20. cout<<"-------Vedran Vadunec-------"<<endl;
  21. cout<<"Izbor: ";
  22. }
  23.  
  24. void generiranje(red *Red){
  25. srand(time(0));
  26.  
  27. do{
  28. cout<<"\nKoliko parova zelite generirati? ";
  29. cin>>broj;
  30. if(broj>10000||broj<=0)
  31. cout<<"\nBroj mora biti u rasponu od 1-10000"<<endl;
  32. }while(broj>10000||broj<=0);
  33.  
  34. cekaonica zapis;
  35. for(int i=0;i<broj;i++){
  36. zapis.broj_pacjenta=i+1;
  37. zapis.cekanje=(rand()%21)+1;
  38. zapis.proteklo_u_ordinaciji=(rand()%21)+1;
  39. zapis.prioritet=(rand()%4)+1;
  40.  
  41. EnqueueQ(zapis,Red);
  42. }
  43. }
  44.  
  45. void simulacija(red *Red, bool mogucnost){
  46. bool prepisan=false;
  47.  
  48. if (mogucnost){
  49. vrijeme_pocetak();
  50.  
  51. red pomocni_red;
  52. InitQ(&pomocni_red);
  53.  
  54.  
  55. cout<<"\nIspis:"<<endl;
  56. cout<<"-----------------------------------"<<endl;
  57. cekaonica tekuci;
  58. if(IsemptyQ(Red))
  59. cout<<"Red je prazan!"<<endl;
  60.  
  61. while(!IsemptyQ(Red)){
  62. tekuci=FrontQ(Red);
  63. cout<<"Broj pacjenta: "<<tekuci.broj_pacjenta<<endl;
  64. cout<<"Cekanje: "<<tekuci.cekanje<<" min"<<endl;
  65. cout<<"Provedeno u ordinaciji: "<<tekuci.proteklo_u_ordinaciji<<" min"<<endl;
  66. cout<<"Prioritet: "<<tekuci.prioritet<<endl;
  67. cout<<"-----------------------------------"<<endl;
  68. EnqueueQ(tekuci,&pomocni_red);
  69. DequeueQ(Red);
  70. }
  71. vrijeme_kraj();
  72. cout<<"Vrijeme izvrsavanja: "<<vrijeme_proteklo()/1000<<" sekundi"<<endl;
  73. cout<<"-----------------------------------\n"<<endl;
  74.  
  75. while(!IsemptyQ(&pomocni_red)){
  76. tekuci = FrontQ(&pomocni_red);
  77. EnqueueQ(tekuci, Red);
  78. DequeueQ(&pomocni_red);
  79. }
  80. }
  81. else{
  82. vrijeme_pocetak();
  83.  
  84. cekaonica zapis;
  85. cekaonica polje[10000];
  86. int brojac=0;
  87.  
  88. while(!IsemptyQ(Red)){
  89. polje[brojac]=FrontQ(Red);
  90. brojac++;
  91. DequeueQ(Red);
  92. }
  93.  
  94. bool zamjena=true;
  95. for(int i=broj-1;i>0&&zamjena; i--){
  96. zamjena=false;
  97. for(int j=0;j<i;j++){
  98. if(polje[j].prioritet>polje[j+1].prioritet){
  99. cekaonica pom=polje[j];
  100. polje[j]=polje[j+1];
  101. polje[j+1]=pom;
  102. zamjena=true;
  103. }
  104. if(polje[j].prioritet==polje[j+1].prioritet){
  105. if(polje[j].cekanje>polje[j+1].cekanje){
  106. cekaonica pom=polje[j];
  107. polje[j]=polje[j+1];
  108. polje[j+1]=pom;
  109. zamjena=true;
  110. }
  111. }
  112. }
  113. }
  114.  
  115. for(int i=0;i<broj;i++)
  116. EnqueueQ(polje[i],Red);
  117.  
  118. red pomocni_red;
  119. InitQ(&pomocni_red);
  120.  
  121. cout<<"\nIspis:"<<endl;
  122. cout<<"-----------------------------------"<<endl;
  123.  
  124. if(IsemptyQ(Red))
  125. cout<<"Red je prazan"<<endl;
  126.  
  127. while(!IsemptyQ(Red)){
  128. zapis=FrontQ(Red);
  129. cout<<"Broj pacjenta: "<<zapis.broj_pacjenta<<endl;
  130. cout<<"Cekanje: "<<zapis.cekanje<<" min"<<endl;
  131. cout<<"Provedeno u ordinaciji: "<<zapis.proteklo_u_ordinaciji<<" min"<<endl;
  132. cout<<"Prioritet: "<<zapis.prioritet<<endl;
  133. cout<<"-----------------------------------"<<endl;
  134. EnqueueQ(zapis,&pomocni_red);
  135. DequeueQ(Red);
  136. }
  137.  
  138. while(!IsemptyQ(&pomocni_red)){
  139. zapis = FrontQ(&pomocni_red);
  140. EnqueueQ(zapis, Red);
  141. DequeueQ(&pomocni_red);
  142. }
  143.  
  144. vrijeme_kraj();
  145. cout<<"Vrijeme izvrsavanja: "<<vrijeme_proteklo()/1000<<" sekundi."<<endl;
  146. cout<<"-----------------------------------\n"<<endl;
  147. }
  148. }
  149.  
  150. int main(){
  151. int izbor;
  152. bool mogucnost;
  153. red Red;
  154. InitQ(&Red);
  155.  
  156. do{
  157. izbornik();
  158. cin>>izbor;
  159.  
  160. switch(izbor){
  161. case 1:
  162. generiranje(&Red);
  163. break;
  164. case 2:
  165. simulacija(&Red,true);
  166. break;
  167. case 3:
  168. simulacija(&Red,false);
  169. break;
  170. case 9:
  171. break;
  172. default:
  173. cout<<"\nUnjeli ste krivu opciju, pokusajte ponovno!"<<endl;
  174. }
  175.  
  176. cout<<endl;
  177. system("pause");
  178.  
  179. } while (izbor!=9);
  180. return 0;
  181. }

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.