Posted By

mgovedic on 12/02/11


Tagged

red Strukture podataka


Versions (?)

main.cpp


 / Published in: C++
 

zadatak 3. koristene varijable tipa clock_t

  1. #include<iostream>
  2. #include<stdlib.h>
  3. #include<ctime>
  4. #include "red_polje.h"
  5. void generiranje(reda *Q, podaci *polje,int N){
  6.  
  7. srand(time(0));
  8. for(int i=0;i<N;i++){
  9. polje[i].a=rand()%10000+1;
  10. polje[i].b=rand()%10000+1;
  11. polje[i].c=rand()%4+1;
  12. polje[i].d=i+1;
  13. cout<<"a:"<<polje[i].a<<endl;
  14. cout<<"b:"<<polje[i].b<<endl;
  15. }
  16. system("pause");
  17. }
  18. void stanje(reda *Q, int N){
  19. podaci novi;
  20. for(int i=0;i<N;i++){
  21. novi=FrontQ(Q);
  22. cout<<"a:"<<novi.a<<endl;
  23. cout<<"b:"<<novi.b<<endl;
  24. }
  25. cout<<"========================"<<endl;
  26. }
  27. void stanje1(reda *Q,int N){
  28. podaci novi;
  29. for(int j=0;j<N;j++){
  30. novi=FrontQ(Q);
  31. cout<<"a:"<<novi.a<<endl;
  32. cout<<"b:"<<novi.b<<endl;
  33. EnQueueQ(novi,Q);
  34. DeQueueQ(Q);
  35. }
  36. cout<<"========================"<<endl;
  37. }
  38. void simulacija(reda *Q, podaci *polje,int N){
  39. system("cls");
  40. cout<<"Simuliranje:"<<endl<<"U red ulazi pacijent 1."<<endl;
  41. podaci novi;
  42. novi.a=polje[0].a;
  43. novi.b=polje[0].b;
  44. novi.c=polje[0].c;
  45. novi.c=polje[0].d;
  46. int i=1;
  47.  
  48. clock_t endwait;
  49. EnQueueQ(novi,Q);
  50. novi=FrontQ(Q);
  51.  
  52. int M;
  53. do{
  54. cout<<"Prikaz stanja reda:"<<endl;
  55. stanje1(Q,i);
  56. endwait = clock () + polje[i].a;
  57. novi.a=polje[i].a;
  58. novi.b=polje[i].b;
  59. novi.c=polje[i].c;
  60. novi.d=polje[i].d;
  61. while (clock() < endwait) {}
  62. cout<<"U red ulazi pacijent "<<i+1<<"."<<endl;
  63. EnQueueQ(novi,Q);
  64. i++;
  65. }while(i<N);
  66. cout<<"Prikaz stanja reda:"<<endl;
  67. stanje1(Q,i);
  68. i=0;
  69.  
  70. do{
  71. M=N-1;
  72. cout<<i+1<<". pacijent ulazi u ordinaciju"<<endl;
  73. endwait = clock () + polje[i].b;
  74. while (clock() < endwait) {}
  75. cout<<i+1<<". pacijent izlazi iz ordinacije"<<endl;
  76. DeQueueQ(Q);
  77. cout<<"prikaz stanja reda:"<<endl;
  78. M-=i;
  79. stanje1(Q,M);
  80. i++;
  81. }while(i<N);
  82.  
  83. if(IsEmptyQ(Q))cout<<"red je prazan"<<endl;
  84. system("pause");
  85. }
  86.  
  87. void simulacija1(reda *Q, podaci *polje,int N){
  88. system("cls");
  89. cout<<"Simuliranje:"<<endl<<"U red ulazi pacijent 1."<<endl;
  90. podaci novi;
  91. novi.a=polje[0].a;
  92. novi.b=polje[0].b;
  93. novi.c=polje[0].c;
  94. novi.d=polje[0].d;
  95. cout<<"Prioritet:"<<polje[0].c<<endl;
  96. int i=1;
  97. clock_t endwait;
  98. EnQueueQ(novi,Q);
  99. int M=N-1;
  100.  
  101. do{
  102. cout<<"Prikaz stanja reda:"<<endl;
  103. stanje1(Q,i);
  104. endwait = clock () + polje[i].a;
  105. novi.a=polje[i].a;
  106. novi.b=polje[i].b;
  107. novi.c=polje[i].c;
  108. novi.d=polje[i].d;
  109. while (clock() < endwait) {}
  110. cout<<"U red ulazi pacijent "<<i+1<<"."<<endl;
  111. cout<<"Prioritet:"<<polje[i].c<<endl;
  112. EnQueueQ(novi,Q);
  113. i++;
  114. }while(i<N);
  115.  
  116. cout<<"Prikaz stanja reda:"<<endl;
  117. stanje1(Q,i);
  118.  
  119.  
  120. int prioritet=1,broj=0;
  121. reda *pomocni=InitQ(pomocni);
  122. int brojac;
  123. bool ponavljanje;
  124. do{
  125. ponavljanje=false;
  126. i=0;
  127. brojac=0;
  128. do{
  129. novi=FrontQ(Q);
  130. if(novi.c==prioritet){
  131. if(broj!=0){
  132. endwait = clock () + polje[i].b;
  133. while (clock() < endwait) {}
  134. }
  135. cout<<novi.d<<". pacijent ulazi u ordinaciju."<<endl;
  136. DeQueueQ(Q);
  137. }
  138. else{
  139. ponavljanje=true;
  140. EnQueueQ(novi,pomocni);
  141. DeQueueQ(Q);
  142. brojac++;
  143. }
  144. i++;
  145. broj++;
  146. }while(i<N);
  147. prioritet++;
  148. for(int j=0;j<brojac;j++){
  149. novi=FrontQ(pomocni);
  150. EnQueueQ(novi,Q);
  151. DeQueueQ(pomocni);
  152. }
  153. cout<<"prikaz reda nakon izbacivanja elemenata s prioritetom:"<<prioritet-1<<endl;
  154. stanje1(Q,brojac);
  155. N=brojac;
  156. }while(ponavljanje);
  157. if(IsEmptyQ(Q))cout<<"red je prazan"<<endl;
  158. system("pause");
  159. }
  160. int main(){
  161. reda *Q=InitQ(Q);
  162. int izbor;
  163. int N;
  164. podaci *polje;
  165. do{
  166. system("cls");
  167. cout<<"1.Generiranje slučajnih brojeva:"<<endl;
  168. cout<<"2.Prijenos parova brojeva u red te ispis stanja reda tijekom simulacije"<<endl;
  169. cout<<"3.Dodavanje prioriteta pacijentima."<<endl;
  170. cout<<"9.Izlaz"<<endl;
  171. cin>>izbor;
  172. switch(izbor){
  173. case 1:
  174. system("cls");
  175.  
  176. cout<<"Koliko parova brojeva zelite generirati"<<endl;
  177. cin>>N;
  178. polje=new podaci[N];
  179. generiranje(Q,polje,N);
  180. break;
  181. case 2:
  182.  
  183. simulacija(Q,polje,N);
  184. break;
  185. case 3: simulacija1(Q,polje,N);
  186. break;
  187.  
  188.  
  189. }
  190. }while(izbor!=9);
  191. return 0;
  192. }

Report this snippet  

You need to login to post a comment.