Posted By

nvarsic on 12/03/11


Tagged

red


Versions (?)

Glavni program - red


 / Published in: C++
 

strukture podataka - zadatak 3

  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <ctime>
  4. //#include "red_pokazivac.h"
  5. #include "red_polje.h"
  6.  
  7. using namespace std;
  8.  
  9. int n;
  10. clock_t vrijeme1,vrijeme2;
  11. double razlika;
  12.  
  13. double vrijeme_pocetak(){
  14. vrijeme1=clock();
  15. return (double)vrijeme1;
  16. };
  17.  
  18. double vrijeme_kraj(){
  19. vrijeme2=clock();
  20. return (double)vrijeme2;
  21. };
  22.  
  23. double vrijeme_proteklo(){
  24. razlika=vrijeme2-vrijeme1;
  25. return razlika;
  26. };
  27.  
  28. void generiranje(r *pacijenti){
  29.  
  30. srand(time(0));
  31. cout<<"Koliko parova zelite generirati? (1-10000)"<<endl;
  32. cin>>n;
  33. tpopis novi;
  34. for(int i=0;i<n;i++){
  35. novi.red_br=i+1;
  36. novi.prvi=((rand()%10001)/1000)+1;
  37. novi.drugi=((rand()%10001)/1000)+1;
  38. novi.pok=(rand()%4)+1;
  39. enqueueq(novi,pacijenti);
  40. }
  41. };
  42.  
  43. void ispis(r *pacijenti){
  44.  
  45. vrijeme_pocetak();
  46. cout<<"Ispis svih pacijenata"<<endl;
  47. tpopis tekuci;
  48. if(isemptyq(pacijenti))
  49. cout<<"Red je prazan"<<endl;
  50. while(!isemptyq(pacijenti)){
  51. tekuci=frontq(pacijenti);
  52. dequeueq(pacijenti);
  53. cout<<"-----------------------------------"<<endl;
  54. cout<<"Pacijent broj "<<tekuci.red_br<<endl;
  55. cout<<"Ceka na red: "<<tekuci.prvi<<" min"<<endl;
  56. cout<<"U ordinaciji je bio: "<<tekuci.drugi<<" min"<<endl;
  57. cout<<"Prioritet mu je: "<<tekuci.pok<<endl;
  58. cout<<"-----------------------------------"<<endl;
  59. }
  60. vrijeme_kraj();
  61. cout<<"Vrijeme trajanja programa: "<<vrijeme_proteklo()/1000<<" s"<<endl;
  62. };
  63.  
  64. void nula(tpopis *polje){
  65. for(int i=0;i<n;i++){
  66. polje[i].red_br=0;
  67. polje[i].prvi=0;
  68. polje[i].drugi=0;
  69. polje[i].pok=0;
  70. }
  71. n=0;
  72. }
  73. void modifikacija(r *pacijenti){
  74.  
  75. vrijeme_pocetak();
  76. tpopis ordinacija[10000];
  77. int brojac=0;
  78. while(!isemptyq(pacijenti)){
  79. ordinacija[brojac]=frontq(pacijenti);
  80. brojac++;
  81. dequeueq(pacijenti);
  82. }
  83.  
  84. //sortiranje bubble sort
  85. bool zamjena=true;
  86. for(int i=n-1;i>0&&zamjena; i--){
  87. zamjena=false;
  88. for(int j=0;j<i;j++){
  89. if(ordinacija[j].pok<ordinacija[j+1].pok){
  90. tpopis pom=ordinacija[j];
  91. ordinacija[j]=ordinacija[j+1];
  92. ordinacija[j+1]=pom;
  93. zamjena=true;
  94. }
  95. if(ordinacija[j].pok==ordinacija[j+1].pok){
  96. if(ordinacija[j].prvi<ordinacija[j+1].prvi){
  97. tpopis pom=ordinacija[j];
  98. ordinacija[j]=ordinacija[j+1];
  99. ordinacija[j+1]=pom;
  100. zamjena=true;
  101. }
  102. }
  103. }
  104. }
  105.  
  106. for(int i=0;i<n;i++)
  107. enqueueq(ordinacija[i],pacijenti);
  108.  
  109. cout<<"Ispis svih pacijenata"<<endl;
  110. tpopis tekuci;
  111. if(isemptyq(pacijenti))
  112. cout<<"Red je prazan"<<endl;
  113. while(!isemptyq(pacijenti)){
  114. tekuci=frontq(pacijenti);
  115. dequeueq(pacijenti);
  116. cout<<"-----------------------------------"<<endl;
  117. cout<<"Pacijent broj "<<tekuci.red_br<<endl;
  118. cout<<"Ceka na red: "<<tekuci.prvi<<" min"<<endl;
  119. cout<<"U ordinaciji je bio: "<<tekuci.drugi<<" min"<<endl;
  120. cout<<"Prioritet mu je: "<<tekuci.pok<<endl;
  121. cout<<"-----------------------------------"<<endl;
  122. }
  123. vrijeme_kraj();
  124. cout<<"Vrijeme izvodenja funkcije u sekundama: "<<vrijeme_proteklo()/1000<<endl;
  125. nula(ordinacija);
  126. }
  127.  
  128. int main(){
  129.  
  130. int izbor;
  131. r *pacijenti;
  132. pacijenti=new r;
  133. initq(pacijenti);
  134. do{
  135. cout<<"\n";
  136. cout<<"IZBORNIK"<<endl;
  137. cout<<"1. Generiranje pacijenata"<<endl;
  138. cout<<"2. Simulacija"<<endl;
  139. cout<<"3. Modifikacija"<<endl;
  140. cout<<"9. Izlaz\n"<<endl;
  141. cin>>izbor;
  142. switch(izbor){
  143. case 1: generiranje(pacijenti);
  144. break;
  145. case 2: ispis(pacijenti);
  146. break;
  147. case 3: modifikacija(pacijenti);
  148. break;
  149. case 9:
  150. return 0;
  151. default: cout<<"Krivi unos!"<<endl;
  152.  
  153. }
  154. }while(izbor != 9);
  155.  
  156. system("PAUSE");
  157. return 0;
  158. }

Report this snippet  

You need to login to post a comment.