Posted By

jovidic on 12/01/11


Tagged


Versions (?)

main


 / Published in: C++
 

SP zadatak 3

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

Report this snippet  

You need to login to post a comment.