Posted By

antolic on 12/06/11


Tagged


Versions (?)

Main funkcija


 / Published in: C++
 

Main funkcija

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

Report this snippet  

You need to login to post a comment.