Posted By

nhorvat on 12/03/11


Tagged

red


Versions (?)

red_main.cpp


 / Published in: C++
 

simulacija cekaonice

  1. #include <iostream>
  2. #include <iomanip>
  3. #include <ctime>
  4. #include "red_polje.h"
  5. //#include "red_pokazivac.h"
  6. using namespace std;
  7.  
  8. void ispis(int parovi[], int prioritet[], int br) { // Prikaz stanja
  9. cout<<endl;
  10. cout<<"<Xi , Yi>"<<"; -> Prioritet\n";
  11. cout<<"--------------------------------------------------\n";
  12. for(int i=0; i<br; i++)
  13. cout<<"<"<<parovi[i]<<","<<parovi[br+i]<<">; -> "<<prioritet[i]<<endl;
  14. cout<<endl;
  15. }
  16.  
  17. void gen(int parovi[], int prioritet[], int br) { // Generiranje pacijenata
  18. srand((unsigned)time(0));
  19. for(int i=0; i<br; i++){
  20. parovi[i]=rand()%200+1;
  21. parovi[br+i]=rand()%40+1;
  22. prioritet[i]=rand()%4+1;
  23. }
  24. }
  25.  
  26. void sim(int parovi[], int br) { // Simulacija cekaonice
  27. red *queue=InitQ(queue); // inicijalizacija praznog reda
  28. int ulaz,izlaz,j,i,pom;
  29. ulaz=izlaz=j=i=pom=0; // ulaz=0 -> prethodno vrijeme
  30. pomocna x;
  31. while(j<br){
  32. x.x=parovi[j];
  33. x.y=parovi[br+j++];
  34. EnQueueQ(x, queue);
  35. cout<<++i<<". pacijent:\n";
  36. pom=FrontQ(queue).x;
  37. cout<<"Na celu reda je: "<<pom<<endl; // prikaz reda
  38. cout<<"Vrijeme dolaska: "<<ulaz<<endl;
  39. izlaz=FrontQ(queue).y;
  40. cout<<"Vrijeme unutra: "<<izlaz<<endl;
  41. ulaz+=izlaz; // + proteklo vrijeme yi
  42. cout<<"Vrijeme odlaska: "<<ulaz<<endl<<endl;
  43. ulaz+=pom; // + xi jedinica "ceka" sljedeci pacijent
  44. DeQueueQ(queue);
  45. }
  46. cout<<"----------------------------------------------------------------\n";
  47. cout<<"Simulacija je gotova!\n";
  48. delete [] queue;
  49. }
  50.  
  51. void msim(int parovi[], int prioritet[], int br) { // Simulacija cekaonice (modifikacija)
  52. int *paroviB = new int[2*br];
  53. int *prioritetB = new int[2*br];
  54. int i,j,tmpA,tmpB,tmpC;
  55. for(i=0; i<br; i++){ // kopiranje u pomocna polja
  56. paroviB[i]=parovi[i];
  57. paroviB[br+i]=parovi[br+i];
  58. prioritetB[i]=prioritet[i];
  59. }
  60. for(i=1;i<br;i++){ // uzlazno sortiranje umetanjem
  61. tmpA=prioritetB[i]; // atributi za zamjenu
  62. tmpB=paroviB[i];
  63. tmpC=paroviB[br+i];
  64. j=i-1;
  65. while(j>=0 && prioritetB[j]>tmpA){
  66. prioritetB[j+1]=prioritetB[j];
  67. paroviB[j+1]=paroviB[j];
  68. paroviB[br+j+1]=paroviB[br+j--];
  69. }
  70. prioritetB[j+1]=tmpA;
  71. paroviB[j+1]=tmpB;
  72. paroviB[br+j+1]=tmpC;
  73. }
  74.  
  75. sim(paroviB,br); //simulacija
  76. delete [] paroviB, prioritetB;
  77. }
  78.  
  79. void simuliraj(int parovi[], int prioritet[], int br, int zadatak){
  80. cout<<"Prikaz stanja na pocetku\n";
  81. ispis(parovi,prioritet,br);
  82. double pocetak=clock();
  83. if(zadatak==1) sim(parovi,br); // poziv funkcije za simulaciju
  84. else msim(parovi,prioritet,br); // poziv funkcije za simulaciju (modifikacija)
  85. double kraj=clock();
  86. cout<<"Vrijeme simuliranja: "<<(kraj-pocetak)<<" stotinki sekunde!\n\n";
  87. }
  88.  
  89. int main() {
  90. int br;
  91. cout<<"Ovo je program za simulaciju cekaonice\nUnesite broj pacijenata: ";
  92. cin>>br;
  93. int *parovi = new int[2*br];
  94. int *prioritet = new int[2*br];
  95. int izbor,generirano=0;
  96. do{
  97. system("cls");
  98. cout << "1. Generiranje pacijenata" << endl;
  99. cout << "2. Pokretanje simulacije cekaonice" << endl;
  100. cout << "3. Pokretanje simulacije cekaonice (modifikacija)" << endl;
  101. cout << "9. Izlaz iz programa\n" << endl;
  102. cout << "Vas izbor: ";
  103. cin >> izbor;
  104. switch(izbor){
  105. case 1:
  106. gen(parovi,prioritet,br);
  107. generirano=1;
  108. ispis(parovi,prioritet,br);
  109. break;
  110. case 2: if(generirano==0) {cout<<"Niste generirali pacijente! \n"; break;}
  111. simuliraj(parovi,prioritet,br,1); break;
  112. case 3: if(generirano==0) {cout<<"Niste generirali pacijente! \n"; break;}
  113. simuliraj(parovi,prioritet,br,2); break;
  114. case 9: cout<<"Kraj !!!\n"; break;
  115. default: cout<<"Krivi unos\n";
  116. }
  117. system("pause");
  118. }while(izbor!=9);
  119. delete [] parovi, prioritet;
  120. return 0;
  121. }

Report this snippet  

You need to login to post a comment.