Posted By

acizmesi1 on 12/01/11


Tagged

c++


Versions (?)

zadatak_3_SP


 / Published in: C++
 

pokazivaci polja red

  1. //Cizmesija Antonela
  2. //red_pokazivaci.h
  3.  
  4. #include <cstdlib>
  5. #include <iostream>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. struct zapis
  11. { int broj_pacijenta;
  12. int cekanje;
  13. int obrada;
  14. int prioritet;
  15. };
  16.  
  17. struct element{
  18. zapis popis;
  19. element *sljedeci;
  20. };
  21.  
  22. struct red_1{
  23. element *front, *rear;
  24. };
  25.  
  26. void initq(red_1 *red){
  27. red->front=(element*)malloc(sizeof(element));
  28. red->front->sljedeci=NULL;
  29. red->rear=red->front;
  30. };
  31.  
  32. bool isemptyq(red_1 *red){
  33. if(red->front==red->rear) return true;
  34. else return false;
  35. };
  36.  
  37. void enqueueq(zapis cekanje,red_1 *red){
  38. element *pom;
  39. pom=new element;
  40. pom->popis=cekanje;
  41. pom->sljedeci=NULL;
  42. red->rear->sljedeci=pom;
  43. red->rear=pom;
  44. };
  45.  
  46. void dequeueq(red_1 *red){
  47. element *pom;
  48. if(isemptyq(red)) cout<<"Red je prazan";
  49. else{
  50. pom=red->front;
  51. red->front=red->front->sljedeci;
  52. free(pom);
  53. }
  54. };
  55.  
  56. zapis frontq(red_1 *red){
  57. if(isemptyq(red)) cout<<"Red je prazan";
  58. else return (red->front->sljedeci->popis);
  59. };
  60.  
  61.  
  62. //red_polje.h
  63.  
  64.  
  65.  
  66. #include <cstdlib>
  67. #include <iostream>
  68.  
  69. using namespace std;
  70.  
  71. struct zapis
  72. { int broj_pacijenta;
  73. int cekanje;
  74. int obrada;
  75. int prioritet;
  76. };
  77.  
  78. struct red_1{
  79. zapis popis[10000];
  80. int front, rear;
  81. };
  82.  
  83. int addone(int i){
  84. return ((i+1)%10000);
  85. };
  86.  
  87. void initq(red_1 *red){
  88. red->front=0;
  89. red->rear=9999; //zadnji el polja
  90. };
  91.  
  92. bool isemptyq(red_1 *red){
  93. if(addone(red->rear)==red->front) return true;
  94. else return false;
  95. };
  96.  
  97. void enqueueq(zapis cekanje, red_1*red){
  98. if(addone(addone(red->rear))==(red->front)) cout<<"Red je pun";
  99. else {
  100. red->rear=addone(red->rear);
  101. red->popis[red->rear]=cekanje;
  102. }
  103. };
  104.  
  105. void dequeueq(red_1*red){
  106. if(isemptyq(red)) cout<<"Red je prazan";
  107. else red->front=addone(red->front);
  108. };
  109.  
  110. zapis frontq(red_1 *red){
  111. if(isemptyq(red)) cout<<"Red je prazan";
  112. else return (red->popis[red->front]);
  113. };
  114.  
  115. #include <cstdlib>
  116. #include <iostream>
  117. #include <ctime>
  118. #include "red_pokazivaci.h"
  119. #include "biblioteka_vrijeme.cc"
  120. //#include "red_polje.h"
  121. using namespace std;
  122.  
  123. int n;
  124. void prvi(red_1 *red_sa_pacijentima){
  125. srand(time(0));
  126. cout<<"Koliko parova ┼żelite generirati? (1-10000)"<<endl;
  127. cin>>n;
  128. zapis podatak_novi;
  129. for(int i=0;i<n;i++){
  130. podatak_novi.broj_pacijenta=i+1;
  131. podatak_novi.cekanje=rand()%100+1;
  132. podatak_novi.obrada=rand()%60+1;
  133. podatak_novi.prioritet=rand()%4+1;
  134. enqueueq(podatak_novi,red_sa_pacijentima);}
  135. };
  136.  
  137. void drugi(red_1 *red_sa_pacijentima){
  138. vrijeme_pocetak();
  139. zapis promatrani;
  140. if(isemptyq(red_sa_pacijentima)) cout<<"Red je prazan"<<endl;
  141. while(!isemptyq(red_sa_pacijentima)){
  142. promatrani=frontq(red_sa_pacijentima);
  143. dequeueq(red_sa_pacijentima);
  144.  
  145. cout<<"---PODACI ZA PACIJENTA---"<<endl;
  146. cout << "\nCekanje\tObrada\tPrioritet Broj pacijenta\n----------------------------------------\n";
  147. cout << promatrani.cekanje << " min"<<'\t';
  148. cout << promatrani.obrada << " min"<<'\t';
  149. cout << promatrani.prioritet << "\t ";
  150. cout << promatrani.broj_pacijenta<<endl;
  151. cout<<"-----------------------------------------"<<endl;
  152. cout<<endl;}
  153.  
  154. vrijeme_kraj();
  155. cout<<"Vrijeme trajanja programa je : "<<vrijeme_proteklo()/1000<<" sekundi"<<endl;
  156. cout<<endl;
  157. };
  158.  
  159. void empty(zapis *polje){
  160. for(int i=0;i<n;i++){
  161. polje[i].broj_pacijenta=0;
  162. polje[i].cekanje=0;
  163. polje[i].obrada=0;
  164. polje[i].prioritet=0;}
  165. n=0;}
  166.  
  167. void treci(red_1 *red_sa_pacijentima){
  168. vrijeme_pocetak();
  169. zapis red_ord[10000];
  170. int brojac=0;
  171. while(!isemptyq(red_sa_pacijentima)){
  172. red_ord[brojac]=frontq(red_sa_pacijentima);
  173. brojac++;
  174. dequeueq(red_sa_pacijentima);}
  175.  
  176. //sortiranje izborom
  177. for(int i=n-1;i>1; i--){
  178. int max=0;
  179. for(int j=1;j<i;j++){
  180. if(red_ord[j].prioritet<red_ord[max].prioritet) max=j;{
  181. zapis pom=red_ord[i-1];
  182. red_ord[i-1]=red_ord[max];
  183. red_ord[max]=pom;}
  184.  
  185. if(red_ord[j].prioritet==red_ord[j+1].prioritet){
  186. if(red_ord[j].cekanje<red_ord[max].cekanje) max=j;{
  187. zapis pom=red_ord[i-1];
  188. red_ord[i-1]=red_ord[max];
  189. red_ord[max]=pom;}}}}
  190.  
  191. for(int i=0;i<n;i++) enqueueq(red_ord[i],red_sa_pacijentima);
  192.  
  193. cout<<"Ispis svih pacijenata"<<endl;
  194. zapis promatrani;
  195. if(isemptyq(red_sa_pacijentima)) cout<<"Red je prazan"<<endl;
  196. while(!isemptyq(red_sa_pacijentima)){
  197. promatrani=frontq(red_sa_pacijentima);
  198. dequeueq(red_sa_pacijentima);
  199. cout<<"---PODACI O PACIJENTU---";
  200. cout << "\nCekanje\tObrada\tPrioritet Broj pacijenta\n------------------------------------------\n";
  201. cout << promatrani.cekanje << " min"<<'\t';
  202. cout << promatrani.obrada << " min"<<'\t';
  203. cout << promatrani.prioritet << "\t ";
  204. cout << promatrani.broj_pacijenta<<endl;
  205. cout<<"------------------------------------------"<<endl;
  206. cout<<endl;}
  207. vrijeme_kraj();
  208. cout<<"Vrijeme trajanja programa "<<vrijeme_proteklo()/1000<<" sekundo."<<endl;
  209. cout<<endl;
  210. empty(red_ord);}
  211.  
  212. int main(int c, char *v[]){
  213. int izbor;
  214. red_1 *red_sa_pacijentima;
  215. red_sa_pacijentima=new red_1;
  216. initq(red_sa_pacijentima);
  217. do{
  218. cout<<"---IZBORNIK--- "<<endl;
  219. cout<<"----------------"<<endl;
  220. cout<<"1. Unos n za generiranje pacijenata"<<endl;
  221. cout<<"2. Simulacija rada ordinacije"<<endl;
  222. cout<<"3. Modifikacija programa"<<endl;
  223. cout<<"(vratite se na mogucnost 1., pa na 3. jer je red mora ponovno inicijalizirati)"<<endl;
  224. cout<<"9. Izlaz iz programa"<<endl;
  225. cout<<endl;
  226. cin>>izbor;
  227. switch(izbor){
  228. case 1: prvi(red_sa_pacijentima); break;
  229. case 2: drugi(red_sa_pacijentima);break;
  230. case 3: treci(red_sa_pacijentima);break;
  231. case 9: return 0;
  232. default: break;}}
  233. while(izbor!=9);
  234. system("PAUSE");
  235. return 0;}

Report this snippet  

You need to login to post a comment.