Posted By

smusa92 on 12/03/11


Tagged

Strukture podataka


Versions (?)

Z3_smusa


 / Published in: C++
 

Treći zadatak iz struktura podataka

  1. //red pokazivaci
  2. struct pacijent
  3. {
  4. int x[10001],y[10001];
  5. int prioritet[10001];
  6. };
  7.  
  8. struct element
  9. {
  10. pacijent e;
  11. element *s;
  12. };
  13.  
  14. struct red
  15. {
  16. element *p,*z;
  17. };
  18.  
  19. typedef struct pacijent elementent;
  20. typedef struct red queue;
  21.  
  22. red* InitQ(red *Q)
  23. {
  24. element *novi = new element;
  25. Q = new red;
  26. novi -> s = NULL;
  27. Q -> z = novi;
  28. Q -> p = novi;
  29. return Q;
  30. }
  31.  
  32. pacijent FrontQ(red *Q)
  33. {
  34. return Q -> p -> s -> e;
  35. }
  36.  
  37. void DeQueneQ(red *Q)
  38. {
  39. element *brisi = Q -> p;
  40. Q -> p = brisi -> s;
  41. delete brisi;
  42. }
  43.  
  44. void EnQueneQ(elementent x, red *Q)
  45. {
  46. element *novi = new element;
  47. novi -> e = x;
  48. novi -> s = NULL;
  49. Q -> z -> s = novi;
  50. Q -> z = novi;
  51. }
  52.  
  53. bool IsEmptyQ(red *Q)
  54. {
  55. if(Q -> z == Q -> p)
  56. return true;
  57. return false;
  58. }
  59.  
  60. //red polje
  61.  
  62. struct pacijent{
  63.  
  64. int x[10001],y[10001];
  65. int prioritet[10001];
  66. };
  67.  
  68. struct red{
  69. pacijent e[10000];
  70. int p, z;
  71. };
  72.  
  73. typedef struct red queue;
  74. typedef struct pacijent element;
  75.  
  76. red* InitQ(red *Q){
  77. Q = new red;
  78. Q -> p = 0;
  79. Q -> z = 9999;
  80. return Q;
  81. }
  82.  
  83.  
  84. int AddOne(int n)
  85. {
  86. return ((n+1)%10000);
  87. }
  88.  
  89. element FrontQ(red *Q)
  90. {
  91. return Q -> e[Q -> p];
  92. }
  93.  
  94. void EnQueneQ(element x, red *Q)
  95. {
  96. Q -> z = AddOne(Q -> z);
  97. Q -> e[Q -> z] = x;
  98. }
  99.  
  100. void DeQueneQ(red *Q)
  101. {
  102. Q -> p = AddOne(Q -> p);
  103. }
  104.  
  105. bool IsEmptyQ(red *Q)
  106. {
  107. if(AddOne(Q -> z) == Q -> p)
  108. return true;
  109. return false;
  110. }
  111.  
  112. //main
  113.  
  114. #include <iostream>
  115. #include <ctime>
  116. #include "red_pokazivaci.h"
  117. using namespace std;
  118.  
  119. red *a;
  120.  
  121.  
  122.  
  123. int izbor;
  124. void drugi(int polje[],int n )
  125.  
  126. {
  127. time_t start, end;
  128. time(&start);
  129.  
  130. int brojac=0,vrijeme_ulaz=0,vrijeme_izlaz=0;
  131. int tunutra=0,tvani=0;
  132.  
  133.  
  134.  
  135. pacijent osoba;
  136. for(int i=0;i<n;i++)
  137. {
  138. osoba.x[i]=polje[i];
  139. osoba.y[i]=polje[i+n];
  140. cout<<"x= "<< osoba.x[i]<<endl;
  141. cout<< osoba.y[i]<<endl<<endl<<endl;
  142. EnQueneQ(osoba,a);
  143. }
  144. while(brojac<n)
  145. {
  146. cout<<"pacijent broj "<<brojac+1<<" je unutra "<<endl;
  147. cout<<"pacijent je dosao "<<vrijeme_ulaz<<endl;
  148. tunutra=FrontQ(a).y[brojac];
  149. tvani=FrontQ(a).x[brojac];
  150. vrijeme_ulaz+=tunutra;
  151. cout<<"unutra je bio "<<tunutra<<endl;
  152. cout<<"pacijent odlazi "<<vrijeme_ulaz<<endl;
  153. vrijeme_ulaz+=tvani;
  154. DeQueneQ(a);
  155. brojac++;
  156.  
  157. }
  158.  
  159. time(&end);
  160. cout<<endl<<"Vrijeme izvodjena programa: "<<difftime(end,start)<<endl;
  161. }
  162.  
  163.  
  164.  
  165. void treci(int *polje,int n)
  166. {
  167. time_t start, end;
  168. time(&start);
  169. pacijent osoba;
  170. int pom1,pom2,pom3;
  171. for(int i=0;i<n;i++){
  172. osoba.x[i]=polje[i];
  173. osoba.y[i]=polje[i+n];
  174. osoba.prioritet[i]=polje[2*n+i];
  175. cout<<" prioriteti prije gledanja "<<osoba.prioritet[i]<<endl;
  176. }
  177. cout<<endl;
  178. for(int i=0;i<n;i++){
  179. for(int j=0;j<n;j++)
  180. {
  181. if(osoba.prioritet[i]<osoba.prioritet[j]){
  182. pom1=osoba.prioritet[i];
  183. pom2=osoba.x[i];
  184. pom3=osoba.y[i];
  185. osoba.prioritet[i]=osoba.prioritet[j];
  186. osoba.prioritet[j]=pom1;
  187. osoba.x[i]=osoba.x[j];
  188. osoba.x[j]=pom2;
  189. osoba.y[i]=osoba.y[j];
  190. osoba.y[j]=pom3;
  191. }
  192.  
  193. else if(osoba.prioritet[i] == osoba.prioritet[j]){
  194. if(osoba.x[i]<osoba.x[j])
  195. {
  196. pom1=osoba.prioritet[i];
  197. pom2=osoba.x[i];
  198. pom3=osoba.y[i];
  199. osoba.prioritet[i]=osoba.prioritet[j];
  200. osoba.prioritet[j]=pom1;
  201. osoba.x[i]=osoba.x[j];
  202. osoba.x[j]=pom2;
  203. osoba.y[i]=osoba.y[j];
  204. osoba.y[j]=pom3;
  205. }
  206. }
  207. } }
  208. int polje1[3*n+1];
  209. for(int i=0;i<n;i++)
  210. {
  211. polje1[i]=osoba.x[i];
  212. polje1[i+n]=osoba.y[i];
  213. polje1[i+2*n]=osoba.prioritet[i];
  214. cout<<"prioriteti poslije sortiranja "<<osoba.prioritet[i]<<endl;
  215.  
  216. }
  217. cout<<endl;
  218. time(&end);
  219. cout<<endl<<"Vrijeme izvodjena programa: "<<difftime(end,start)<<endl;
  220. drugi(polje1,n);
  221.  
  222. void random(int n,int izbor1)
  223. {
  224. int a[3*n+1];
  225. time_t qTime;
  226. time(&qTime);
  227. srand(qTime);
  228. rand();
  229. for(int i=0;i<n;i++)
  230. {
  231. a[i]=rand()%10000+1;
  232.  
  233. a[i+n]=rand()%10000+1;
  234. a[2*n+i]=rand()%4+1;
  235.  
  236. }
  237. for(int i=0;i<n;i++)
  238. {
  239. cout<<a[i]<<","<<a[i+n]<<endl;
  240. }
  241.  
  242. if(izbor1==1) drugi(a,n);
  243. if(izbor1==2) treci(a,n);
  244.  
  245. }
  246.  
  247.  
  248. int main ()
  249. {
  250.  
  251. a = InitQ(a);
  252. int n;
  253. do{
  254. system("cls");
  255. cout<<"1. Random vrijednosti polja i prikaz reda "<<endl;
  256. cout<<"2. Rad s prioritetima "<<endl<<endl;
  257. cout<<"9. Kraj programa :)"<<endl;
  258. cout<<" Unesite izbor: ";
  259.  
  260. cin>>izbor;
  261. cout<<endl;
  262. switch (izbor)
  263. {
  264. case 1:
  265. cout<<"Koliko parova zelite unijeti "<<endl;
  266. cin>>n;
  267.  
  268. random(n,1);
  269. system("pause");
  270. break;
  271.  
  272. case 2:cout<<"Koliko parova zelite unijeti "<<endl;
  273. cin>>n;
  274. random(n,2);
  275. system("pause");
  276. break;
  277.  
  278.  
  279. }
  280.  
  281. }while(izbor!=9);
  282.  
  283. system("pause");
  284. return 0;
  285. }

Report this snippet  

You need to login to post a comment.