Posted By

tomislavb on 12/03/11


Tagged

main c++ zadatak3 tbrkan strukturepodataka


Versions (?)

main.cpp


 / Published in: C++
 

moj glavni main program

  1. #include<iostream>
  2. #include<ctime>
  3. #include "red_polje.h"
  4. using namespace std;
  5. queue *red=new queue;
  6. queue *cekaonica=new queue;
  7.  
  8. atp_red elem;
  9. int suma=0;
  10. int prvi() {
  11. int n=0;
  12. cout<<"Koliko brojeva zelite izgenerirati: ";
  13. cin>>n;
  14. suma+=n;
  15. srand(time(NULL));
  16. for (int i=0;i<n;i++) {
  17. elem.x=rand()%10000+1;
  18. elem.y=rand()%10000+1;
  19. EnQueueQ(elem,red);
  20. }
  21. cout<<"Izgenerirano je "<<n<<" slucajnih brojeva!"<<endl;
  22. return 0;}
  23.  
  24. int Vrijeme(int vrijeme) {
  25. cout<<"Vrijeme potrebno za pregled svih pacijenata: "<<vrijeme<<" sec."<<endl;
  26. cout<<"Prosjecno vrijeme cekanje pacijenta u cekaonici: "<<vrijeme/suma<<" sec."<<endl;
  27. return 0;}
  28.  
  29. int drugi() {
  30. cout <<"----------------------------------------------"<<endl;
  31. int stanje_cekaonica=0, cekanje=0, puo=0, vrijeme=0;
  32. bool ordinacija=false;
  33. int polje[suma];
  34. if (IsEmptyQ(red)) {
  35. cout<<"Cekaonica je prazna!"<<endl;
  36. return 0;}
  37. InitQ(cekaonica);
  38. for (int j=1;j<=suma;j++) {
  39. elem=FrontQ(red);
  40. stanje_cekaonica++;
  41. DeQueueQ(red);
  42. elem.prioritet=short(rand()%4+1);
  43. elem.i=j;
  44. vrijeme+=elem.x;
  45. polje[j-1]=cekanje;
  46. cout<<"Pacijent br. "<<elem.i<<" ulazi u kliniku."<<endl;
  47. cout<<"Prioritet pacijenta: ";
  48. if (elem.prioritet==1) cout<<"Kriticni slucaj!"<<endl;
  49. else if (elem.prioritet==2) cout<<"rizicni slucaj!"<<endl;
  50. else if (elem.prioritet==3) cout<<"slucaj niskog rizika!"<<endl;
  51. else if (elem.prioritet==4) cout<<"nije hitan slucaj!"<<endl;
  52. if (stanje_cekaonica>1) {
  53. for (int k=1;k<stanje_cekaonica;k++) {
  54. atp_red elem2=FrontQ(cekaonica), pom;
  55. DeQueueQ(cekaonica);
  56. if (elem.i==elem2.i) continue;
  57. if (elem2.prioritet<elem.prioritet||(elem2.prioritet==elem.prioritet&&elem2.i<elem.i)) {
  58. pom=elem2;
  59. elem2=elem;
  60. elem=pom;}
  61. EnQueueQ(elem2,cekaonica);}}
  62. if (elem.i<1||elem.i>suma) continue;
  63. if (!ordinacija) {
  64. if (elem.i!=1) cout<<"Pacijent br. "<<puo<<" izlazi iz ordinacije i odlazi kuci."<<endl;
  65. if (stanje_cekaonica>1) cout<<"Pacijent br. "<<elem.i<<" ima najveci prioritet u cekaonici!"<<endl;
  66. int ceka=cekanje-polje[elem.i-1];
  67. if (ceka<0) ceka=0;
  68. cout<<"Pacijent br. "<<elem.i<<" ulazi u ordinaciju."<<endl;
  69. cout<<"Pacijent br. "<<elem.i<<" je cekao u redu: "<<ceka<<" sec."<<endl;
  70. puo=elem.i;
  71. if (stanje_cekaonica<=1) InitQ(cekaonica);
  72. cout<<"Broj pacijenata u cekaonici: "<<--stanje_cekaonica<<endl<<endl;
  73. cekanje-=elem.y;}
  74. else EnQueueQ(elem,cekaonica);
  75. cekanje+=elem.x;
  76. if (cekanje<0) cekanje=0;
  77. if (cekanje>elem.y) ordinacija=false;
  78. else {
  79. ordinacija=true;
  80. vrijeme+=(elem.x-elem.y);}}
  81.  
  82. InitQ(red);
  83. for (int j=0;j<stanje_cekaonica;) {
  84. elem=FrontQ(cekaonica);
  85. DeQueueQ(cekaonica);
  86. if (stanje_cekaonica>1) {
  87. for (int k=1;k<stanje_cekaonica;k++) {
  88. atp_red elem2=FrontQ(cekaonica), pom;
  89. DeQueueQ(cekaonica);
  90. if (elem.i==elem2.i) continue;
  91. if (elem2.prioritet<elem.prioritet||(elem2.prioritet==elem.prioritet&&elem2.i<elem.i)) {
  92. pom=elem2;
  93. elem2=elem;
  94. elem=pom;}
  95. EnQueueQ(elem2,cekaonica);}}
  96. if (elem.i<1||elem.i>suma)continue;
  97. if (stanje_cekaonica>1) {
  98. cout<<"Pacijent br. "<<puo<<" izlazi iz ordinacije i odlazi kuci"<<endl;
  99. cout<<"Pacijent br. "<<elem.i<<" ima najveci prioritet u cekaonici"<<endl;}
  100. int ceka=cekanje-polje[elem.i-1];
  101. if (ceka<0) ceka=0;
  102. cout<<"Pacijent br. "<<elem.i<<" ulazi u ordinaciju."<<endl;
  103. cout<<"Pacijent br. "<<elem.i<<" je cekao u redu: "<<ceka<<" sec."<<endl;
  104. puo=elem.i;
  105. if (stanje_cekaonica<=1) InitQ(cekaonica);
  106. cout<<"Broj pacijenata u cekaonici: "<<--stanje_cekaonica<<endl<<endl;
  107. cekanje+=elem.x;
  108. vrijeme+=elem.y;}
  109. cout<<"Pacijent br. "<<elem.i<<" izlazi iz ordinacije i odlazi kuci"<<endl;
  110. Vrijeme(vrijeme);
  111. suma=0;
  112. cout <<"----------------------------------------------"<<endl;
  113. return 0;}
  114.  
  115. int main (){
  116. int izbor=0;
  117. bool ponovi=true;
  118. InitQ(red);
  119. do {
  120. cout <<endl<<"----------IZBORNIK----------"<<endl;
  121. cout <<"1. Generiranje N parova slucajnih brojeva"<<endl;
  122. cout <<"2. Simulacija tijeka pacijenata u cekaonici i ordinaciji"<<endl;
  123. cout <<"9. Izlaz iz programa"<<endl;
  124. cout <<"Unesite broj zeljene opcije: ";
  125. cin >>izbor;
  126. switch (izbor){
  127. case 1: prvi();break;
  128. case 2: drugi();break;
  129. case 9: ponovi=false;break;
  130. default: cout <<"Unijeli ste krivi broj!"<<endl;}
  131. }while(ponovi);
  132. system("pause");
  133. return 0;
  134. }

Report this snippet  

You need to login to post a comment.