Posted By

rodjuga on 12/03/11


Tagged

sp Strukture foi zadatak3


Versions (?)

sp_zad3_main+polje.h


 / Published in: C++
 

strukture podataka,zadatak 3

  1. #include <iostream>
  2. #include <ctime>
  3. #include "polje.h"
  4. //#include "polje.h"
  5. using namespace std;
  6.  
  7. void generiranje(tqu *red) // generiranje pacijenata
  8. {
  9. tpacijent pacijent;
  10. int n;
  11. cout<<"broj vremena: ";
  12. cin>>n;
  13. for(int i=0; i<n; i++)
  14. {
  15. pacijent.v1 = rand()%10000+1;
  16. pacijent.v2 = rand()%10000+1;
  17. pacijent.prioritet = rand()%4+1;
  18. pacijent.rbr = i+1;
  19. EnQueueQ(pacijent, red);
  20. }
  21. }
  22.  
  23. void ispis(tpacijent pacijent)
  24. {
  25. cout<<"pacijent_"<<pacijent.rbr<<endl; //ispis pacijenata
  26. cout<<"prioritet: "<<pacijent.prioritet<<endl;
  27. cout<<"vrijeme ulaska: "<<pacijent.v1<<" s"<<endl;
  28. cout<<"vrijeme izlaska: "<<pacijent.v2<<" s"<<endl<<endl;
  29. }
  30.  
  31. void ulazak(tqu *red)
  32. {
  33. double sp,sk;
  34. if(IsEmptyQ(red)) return;
  35. sp = clock();
  36. while(!(IsEmptyQ(red))) //generiranje ulaska pacijenata
  37. {
  38. tpacijent pacijent = FrontQ(red);
  39. ispis(pacijent);
  40. DeQueueQ(red);
  41. }
  42. sk = clock();
  43. cout<<endl<<"proteklo vrijeme: "<<(sk-sp)/1000<<" s"<<endl;
  44. }
  45.  
  46. void premjestanje(tqu *red, int prioritet)
  47. {
  48.  
  49. if(IsEmptyQ(red)) return;
  50. tpacijent pacijent;
  51. tqu *red2 = InitQ(red2);
  52. while(!(IsEmptyQ(red)))
  53. { //razmje���¡taj pacijenata po prioritetima
  54. pacijent = FrontQ(red);
  55. if(pacijent.prioritet == prioritet)
  56. ispis(pacijent);
  57. else
  58. EnQueueQ(pacijent, red2);
  59. DeQueueQ(red);
  60. }
  61. memcpy(red,red2,sizeof(tqu));
  62. }
  63.  
  64. void ulazak_P(tqu *red)
  65. {
  66. double sp,sk;
  67. sp = clock();
  68. for(int i=1; i<5; i++) //ulazak br 2
  69. premjestanje(red, i);
  70. sk = clock();
  71. if((IsEmptyQ(red)))cout<<endl<<"proteklo vrijeme: "<<(sk-sp)/1000<<" s"<<endl;
  72. }
  73.  
  74. int main()
  75. {
  76.  
  77. tqu *red = InitQ(red);
  78.  
  79. int izbor;
  80. do{
  81. cout<<endl<<"1: generiranje vremena";
  82. cout<<endl<<"2: ispis (simulacija rada)";
  83. cout<<endl<<"3: ispis po prioritetima";
  84. cout<<endl<<"9: kraj";
  85. cout<<endl<<"vas unos:";
  86. cin>>izbor;
  87.  
  88. switch(izbor)
  89. {
  90. case 1:generiranje(red);
  91. break;
  92. case 2:ulazak(red);
  93. break;
  94. case 3:ulazak_P(red);
  95. break;
  96.  
  97. case 9:
  98. break;
  99. }
  100. }while(izbor!=9);
  101.  
  102. system("pause");
  103. return 0;
  104. }
  105.  
  106.  
  107. ------------------------------------------------------------------------
  108.  
  109. struct tpacijent{ //struktura tpacijent
  110. int v1, v2;
  111. int prioritet;
  112. int rbr;
  113. };
  114.  
  115. struct tqu{ //struktura tqu
  116. tpacijent pacijent[10000];
  117. int front;
  118. int rear;
  119. };
  120.  
  121. int AddOne(int n)
  122. {
  123. return((n+1)%10000);
  124. }
  125.  
  126. bool IsEmptyQ(tqu *q) // provjeravamo je li red prazan
  127. {
  128. if(AddOne(q->rear) == q->front)
  129. return true;
  130. else
  131. return false;
  132. }
  133.  
  134. tpacijent FrontQ(tqu *q) // vra���a vrijednost elementa koji se trenutno nalazi na ���elu reda
  135. {
  136. tpacijent pom;
  137. pom.v1 = 0;
  138. pom.v2 = 0;
  139. pom.prioritet = 0;
  140. pom.rbr = 0;
  141. if(IsEmptyQ(q)) return pom;
  142. return q->pacijent[q->front];
  143. }
  144.  
  145. void EnQueueQ(tpacijent x, tqu *q) //stavlja element tpacijent x na po���etak reda tqu *q
  146. {
  147. q->rear = AddOne(q->rear);
  148. q->pacijent[q->rear] = x;
  149. }
  150.  
  151. void DeQueueQ(tqu *q) //bri���¡e element s ���ela reda
  152. {
  153. if(IsEmptyQ(q)) return;
  154. q->front = AddOne(q->front);
  155. }
  156.  
  157. tqu* InitQ(tqu *q) //inicira prazan red
  158. {
  159. q = new tqu;
  160. q->front = 0;
  161. q->rear = 9999;
  162. return q;
  163. }

Report this snippet  

You need to login to post a comment.