Posted By

tjelcic1 on 12/03/11


Tagged

c++


Versions (?)

strukture podataka


 / Published in: C++
 

zadatak iz SP-a

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

Report this snippet  

You need to login to post a comment.