Posted By

ljpintaric on 11/25/11


Tagged


Versions (?)

program


 / Published in: C++
 

zd3 programsko rješenje

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>
  4. #include "red_pokazivac.h"
  5. #include "b_vrijeme.h"
  6. //#include "red_polje.h"
  7.  
  8. using namespace std;
  9.  
  10. int n;
  11.  
  12. void generiranje(r *pacijenti){
  13. srand(time(0));
  14. cout<<"Koliko parova želite generirati? (1-10000)"<<endl;
  15. cin>>n;
  16. tpopis novi;
  17. for(int i=0;i<n;i++){
  18. novi.rb=i+1;
  19. novi.x=((rand()%10001)/1000)+1;
  20. novi.y=((rand()%10001)/1000)+1;
  21. novi.p=(rand()%4)+1;
  22. enqueueq(novi,pacijenti);
  23. }
  24. };
  25. void ispis(r *pacijenti){
  26. vrijeme_pocetak();
  27. cout<<"Ispis svih pacijenata"<<endl;
  28. tpopis tekuci;
  29. if(isemptyq(pacijenti)) cout<<"red je prazan"<<endl;
  30. while(!isemptyq(pacijenti)){
  31. tekuci=frontq(pacijenti);
  32. dequeueq(pacijenti);
  33. cout<<"pacijent br....."<<tekuci.rb<<endl;
  34. cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
  35. cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
  36. cout<<"prioritet:......"<<tekuci.p<<endl;
  37. cout<<"-----------------------------------"<<endl;
  38. }
  39. vrijeme_kraj();
  40. cout<<"Vrijeme izvođenja funkcije u sekundama: "<<vrijeme_proteklo()/1000<<endl;
  41. };
  42.  
  43. void nula(tpopis *polje){
  44. for(int i=0;i<n;i++){
  45. polje[i].rb=0;
  46. polje[i].x=0;
  47. polje[i].y=0;
  48. polje[i].p=0;
  49. }
  50. n=0;
  51. }
  52. void modifikacija(r *pacijenti){
  53. vrijeme_pocetak();
  54. tpopis ordinacija[10000];
  55. int brojac=0;
  56. while(!isemptyq(pacijenti)){
  57. ordinacija[brojac]=frontq(pacijenti);
  58. brojac++;
  59. dequeueq(pacijenti);}
  60.  
  61. //sortiranje bubble sort
  62. bool zamjena=true;
  63. for(int i=n-1;i>0&&zamjena; i--){
  64. zamjena=false;
  65. for(int j=0;j<i;j++){
  66. if(ordinacija[j].p<ordinacija[j+1].p){
  67. tpopis pom=ordinacija[j];
  68. ordinacija[j]=ordinacija[j+1];
  69. ordinacija[j+1]=pom;
  70. zamjena=true;
  71. }
  72. if(ordinacija[j].p==ordinacija[j+1].p){
  73. if(ordinacija[j].x<ordinacija[j+1].x){
  74. tpopis pom=ordinacija[j];
  75. ordinacija[j]=ordinacija[j+1];
  76. ordinacija[j+1]=pom;
  77. zamjena=true;
  78. }
  79. }
  80. }
  81. }
  82.  
  83. for(int i=0;i<n;i++) enqueueq(ordinacija[i],pacijenti);
  84.  
  85. cout<<"Ispis svih pacijenata"<<endl;
  86. tpopis tekuci;
  87. if(isemptyq(pacijenti)) cout<<"red je prazan"<<endl;
  88. while(!isemptyq(pacijenti)){
  89. tekuci=frontq(pacijenti);
  90. dequeueq(pacijenti);
  91. cout<<"pacijent br....."<<tekuci.rb<<endl;
  92. cout<<"cekanje:........"<<tekuci.x<<" min"<<endl;
  93. cout<<"u ordinaciji:..."<<tekuci.y<<" min"<<endl;
  94. cout<<"prioritet:......"<<tekuci.p<<endl;
  95. cout<<"-----------------------------------"<<endl;
  96. }
  97. vrijeme_kraj();
  98. cout<<"Vrijeme izvođenja funkcije u sekundama: "<<vrijeme_proteklo()/1000<<endl;
  99. nula(ordinacija);
  100. }
  101.  
  102. int main(int argc, char *argv[])
  103. {
  104. int izbor;
  105. r *pacijenti;
  106. pacijenti=new r;
  107. initq(pacijenti);
  108. do{
  109. cout<<"Odaberite: "<<endl;
  110. cout<<"1 za generiranje pacijenata"<<endl;
  111. cout<<"2 za simulaciju"<<endl;
  112. cout<<"3 za modifikaciju"<<endl;
  113. cout<<"9 za kraj programa"<<endl;
  114. cin>>izbor;
  115. switch(izbor){
  116. case 1: generiranje(pacijenti); break;
  117. case 2: ispis(pacijenti);break;
  118. case 3: modifikacija(pacijenti);break;
  119. case 9: return 0;
  120. default: break;
  121. }}
  122. while(1);
  123. system("PAUSE");
  124. return EXIT_SUCCESS;
  125. }

Report this snippet  

You need to login to post a comment.