Posted By

tomi91 on 11/29/11


Tagged

red program polje simulacija ordinacija pacijent lijecnik


Versions (?)

glavni_program.cpp


 / Published in: C++
 

Glavni program - simulacija lijecnicke ordinacije

  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.  
  17. void f1(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()%10000+1;
  21. parovi[br+i]=rand()%10000+1;
  22. prioritet[i]=rand()%4+1;
  23. }
  24. }
  25.  
  26. void f2(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 f3(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. f2(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) f2(parovi,br); // poziv funkcije za simulaciju
  84. else f3(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. void izbornik(int *&parovi, int *&prioritet, int br){
  90. int izbor,generirano=0;
  91. do{
  92. system("cls");
  93. cout << "1. Generiranje pacijenata" << endl;
  94. cout << "2. Pokretanje simulacije cekaonice" << endl;
  95. cout << "3. Pokretanje simulacije cekaonice (modifikacija)" << endl;
  96. cout << "9. Izlaz iz programa\n" << endl;
  97. cout << "Vas izbor: ";
  98. cin >> izbor;
  99. if(generirano==0 && izbor!=9 && izbor!=1){
  100. cout<<"Prvo odaberite generiranje pacijenata!\n";
  101. system("pause"); continue;
  102. }
  103. switch(izbor){
  104. case 1:
  105. f1(parovi,prioritet,br);
  106. generirano=1;
  107. ispis(parovi,prioritet,br);
  108. break;
  109. case 2: simuliraj(parovi,prioritet,br,1); break;
  110. case 3: simuliraj(parovi,prioritet,br,2); break;
  111. case 9: cout<<"Kraj !!!\n"; break;
  112. default: cout<<"Krivi unos\n";
  113. }
  114. system("pause");
  115. }while(izbor!=9);
  116. }
  117. int main() {
  118. int br;
  119. cout<<"Program za simulaciju rada lijecnicke ordinacije\n...\nUnesite broj pacijenata: ";
  120. cin>>br;
  121. int *parovi = new int[2*br];
  122. int *prioritet = new int[2*br];
  123. izbornik(parovi, prioritet, br); // poziv izbornika
  124. delete [] parovi, prioritet;
  125. return 0;
  126. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: tomi91 on November 29, 2011

Ovdje je prikazan kod samog programa odnosno njegova realizacija. Sam program je realiziran tako da na pocetku unosimo broj pacijena, a kasnije se opcijom 1 generira uneseni broj parova (pacijenata) slucajnih brojeva. Generalno sto se tice glavnog programa, realiziran je pomocu 6 funkcija (bez main). U funkciji main imam dinamicko alocirano polje cjelih brojeva u koje ce biti uneseni slucajni brojevi. Zatim, mjerenje vremena mi je drugacije, imam pregledan ispis trenutnog stanja u "cekaonici" itd.

You need to login to post a comment.