Posted By

mikoscak on 12/19/11


Tagged


Versions (?)

simulacija


 / Published in: C++
 

simulacija rada liječničke ordinacije

  1. #include<iostream>
  2. #include<iomanip>
  3. #include<time.h>
  4. //#include "red_pokazivac.h"
  5. #include "red_polje.h"
  6. #define N 10000
  7. using namespace std;
  8. void generiraj(int par[],int prioritet_pacijenta[],int broj);
  9. void ispis(int par[],int prioritet_pacijenta[],int broj);
  10. void simuliranje(int par[],int prioritet_pacijenta[],int broj,int radi);
  11. void cekaonica(int par[],int broj);
  12. void modifikacija(int par[],int prioritet_pacijenta[],int broj);
  13. int main(void){
  14. int broj;
  15. int izbor;
  16. cout<<"Unesite broj pacijenata:";
  17. cin>>broj;
  18. int *par=new int[2*broj];
  19. int *prioritet_pacijenta=new int[2*broj];
  20. bool generiranje=false;
  21. while(izbor!=9){
  22. system("cls");
  23. cout<<"Izbornik"<<endl;
  24. cout<<"1.Generiranje zapisa pacijenata"<<endl;
  25. cout<<"2.Simulacija cekaonice"<<endl;
  26. cout<<"3.Modifikacija simulacije cekaonice"<<endl;
  27. cout<<"9.Izlaz"<<endl;
  28. cout<<"Izbor:";
  29. cin>>izbor;
  30. if(generiranje==false&&izbor!=0&&izbor!=1&&izbor!=9){
  31. cout<<"Pogresan unos"<<endl;
  32. system("pause");
  33. continue;
  34. }
  35. switch(izbor){
  36. case 1:
  37. generiraj(par,prioritet_pacijenta,broj);
  38. generiranje=true;
  39. ispis(par,prioritet_pacijenta,broj);
  40. break;
  41. case 2:
  42. simuliranje(par,prioritet_pacijenta,broj,1);
  43. break;
  44. case 3:
  45. simuliranje(par,prioritet_pacijenta,broj,2);
  46. break;
  47. case 9:
  48. cout<<"Izlaz iz programa"<<endl;
  49. break;
  50. default:
  51. cout<<"Krivi unos"<<endl;
  52. }
  53. system("pause");
  54. };
  55. delete[] par;
  56. delete[] prioritet_pacijenta;
  57. return 0;
  58. };
  59. void generiraj(int par[],int prioritet_pacijenta[],int broj){
  60. srand((unsigned)time(0));
  61. int x=0;
  62. while(x<broj){
  63. par[x]=rand()%N+1;
  64. par[broj+x]=rand()%N+1;
  65. prioritet_pacijenta[x]=rand()%4+1;
  66. x++;
  67. };
  68. };
  69. void ispis(int par[],int prioritet_pacijenta[],int broj){
  70. cout<<endl<<setw(5)<<"Xi"<<setw(10)<<"Yi"<<setw(17)<<"Prioritet"<<endl;
  71. int x=0;
  72. while(x<broj){
  73. cout<<setw(5)<<par[x]<<setw(10)<<par[broj+x]<<setw(12)<<prioritet_pacijenta[x]<<endl;
  74. x++;
  75. };
  76. };
  77. void simuliranje(int par[],int prioritet_pacijenta[],int broj,int radi){
  78. cout<<"Stanje:"<<endl;
  79. ispis(par,prioritet_pacijenta,broj);
  80. float vrijeme_pocetak=clock();
  81. if(radi==1)
  82. cekaonica(par,broj);
  83. else
  84. modifikacija(par,prioritet_pacijenta,broj);
  85. float vrijeme_kraj=clock();
  86. cout<<"Vrijeme:"<<(vrijeme_kraj-vrijeme_pocetak)<<" ms"<<endl<<endl;
  87. };
  88. void cekaonica(int par[],int broj){
  89. red *red=InitQ(red);
  90. int pocetak;
  91. int kraj;
  92. int x;
  93. int y;
  94. int pomocna;
  95. pocetak=kraj=x=y=pomocna=0;
  96. element e;
  97. cout<<endl;
  98. while(y<broj){
  99. e.i = par[y];
  100. e.j=par[broj+y++];
  101. EnQueueQ(e,red);
  102. cout<<++x<<". pacijent:"<<endl;
  103. pomocna=FrontQ(red).i;
  104. cout<<"Na vrhu reda se nalazi:"<<pomocna<<endl;
  105. cout<<"Vrijeme dolaska pacijenata:"<<pocetak<<endl;
  106. kraj=FrontQ(red).j;
  107. cout<<"Vrijeme u ordinaciji:"<<kraj<<endl;
  108. pocetak=pocetak+kraj;
  109. cout<<"Vrijeme odlaska iz ordinacije:"<<pocetak<<endl<<endl;
  110. pocetak=pocetak+pomocna;
  111. DeQueueQ(red);
  112. };
  113. delete [] red;
  114. };
  115. void modifikacija(int par[],int prioritet_pacijenta[],int broj){
  116. int *parovi=new int[2*broj];
  117. int *prioriteti=new int[2*broj];
  118. int x=0, y, pom1, pom2, pom3;
  119. while(x<broj){
  120. parovi[x]=par[x];
  121. parovi[broj+x]=par[broj+x];
  122. prioriteti[x]=prioritet_pacijenta[x];
  123. x++;
  124. };
  125. x=1;
  126. while(x<broj){
  127. pom1=prioriteti[x];
  128. pom2=parovi[x];
  129. pom3=parovi[broj+x];
  130. y=x-1;
  131. while(y>=0&&prioriteti[y]>pom1){
  132. prioriteti[y+1]=prioriteti[y];
  133. parovi[y+1]=parovi[y];
  134. parovi[broj+y+1]=parovi[broj+y--];
  135. };
  136. prioriteti[y+1]=pom1;
  137. parovi[y+1]=pom2;
  138. parovi[broj+y+1]=pom3;
  139. x++;
  140. };
  141. cekaonica(parovi,broj);
  142. delete[] parovi;
  143. delete[] prioriteti;
  144. };

Report this snippet  

You need to login to post a comment.