Posted By

ikukec on 12/02/11


Tagged

sp poljeredzadatak za


Versions (?)

Zadatak za SP


 / Published in: C++
 

Glavni program

  1. #include <iostream>
  2. #include <ctime>
  3. #include "red_polje.h"
  4. //#include "red_pokazivac.h"
  5. #include <time.h>
  6.  
  7. osoba polje[10000];
  8. int n;
  9. clock_t vrijeme1,vrijeme2;
  10.  
  11. double vrijeme11=0, vrijeme22=0; //varijable za racunanje vremena
  12.  
  13. double razlika;
  14.  
  15. double vrijeme_pocetak(){
  16. vrijeme1=clock();
  17. return (double)vrijeme1;
  18. };
  19. double vrijeme_kraj(){
  20. vrijeme2=clock();
  21. return (double)vrijeme2;
  22. };
  23. double vrijeme_proteklo(){
  24. razlika=vrijeme2-vrijeme1;
  25. return razlika;
  26. };
  27.  
  28. using namespace std;
  29.  
  30.  
  31. void generiranje(int n)
  32. {
  33.  
  34. osoba aa;
  35. for(int x=0;x<n;x++)
  36. {
  37. aa.a=rand()%4+1;
  38. aa.x=rand()%10000+1;
  39. aa.y=rand()%10000+1;
  40. polje[x]=aa;
  41.  
  42. }
  43. }
  44.  
  45.  
  46. int provjera (int a, int b) {
  47. if (!b) return -1;
  48. int broj=-1;
  49. for (int i=0; i<b; i++) {
  50. if (FrontQ(red).a>a && broj<0) broj=i;
  51. EnQueueQ(FrontQ(red), red);
  52. DeQueueQ(red);
  53. }
  54. if (broj>=0) return broj;
  55. return -1;
  56. }
  57.  
  58. void posluzivanje1()
  59. {
  60. vrijeme_pocetak();
  61.  
  62. if (n==0) {
  63. cout << "\nPolje je prazno!\n";
  64. system ("pause");
  65. return;
  66. }
  67.  
  68. int a=0, br=0, mjesto;
  69. osoba ord;
  70. cout <<"\n";
  71.  
  72. while (a<n || !IsEmptyQ(red)) {
  73. if (!a) {
  74. ord=polje[a];
  75. a++;
  76. cout <<"Prvi pacijent je usao u ordinaciju.\n";
  77. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  78. }
  79. else if (a<n) {
  80. if (ord.y>polje[a].x) {
  81. ord.y-=polje[a].x;
  82. cout << "Dosao je novi pacijent u cekaonicu";
  83. EnQueueQ(polje[a], red);
  84. br++;
  85. a++;
  86. cout << "\nU cekaonici je trenutno " << br << " pacijenta";
  87. cout << "\nPacijent u ordinaciji ce biti gotov za " << ord.y << " jedinica vremena.";
  88. }
  89. else if (ord.y<polje[a].x) {
  90. polje[a].x-=ord.y;
  91. if (IsEmptyQ(red)) {
  92. ord=polje[a];
  93. a++;
  94. }
  95. else {
  96. ord=FrontQ(red);
  97. DeQueueQ(red);
  98. br--;
  99. }
  100. cout << "Novi pacijent je u ordinaciji.\n";
  101. cout << "U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  102. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  103. }
  104. else {
  105. cout << "Novi pacijent je usao u cekaonicu.";
  106. EnQueueQ(polje[a], red);
  107. a++;
  108. ord=FrontQ(red);
  109. DeQueueQ(red);
  110. cout <<"\nNovi pacijent je usao u ordinaciju.\n";
  111. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  112. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  113. }
  114. }
  115. else {
  116. ord=FrontQ(red);
  117. DeQueueQ(red);
  118. cout << "Novi pacijent je usao u ordinaciju.\n";
  119. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  120. br--;
  121. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  122. }
  123. cout << "\n\n---------------------------------------------------\n";
  124. system ("pause");
  125. cout << "---------------------------------------------------\n\n";
  126. }
  127. cout << "KRAJ SIMULACIJE SLIJEDNOG USLUZIVANJA PACIJENATA\n";
  128. cout << "\n---------------------------------------------------\n\n";
  129. system ("pause");
  130. vrijeme_kraj();
  131. vrijeme11=vrijeme_proteklo()/1000;
  132. }
  133.  
  134. void posluzivanje2()
  135. {
  136. vrijeme_pocetak();
  137.  
  138. if (n==0) {
  139. cout << "\nPolje je prazno!\n";
  140. system ("pause");
  141. return;
  142. }
  143.  
  144. int a=0, br=0, mjesto;
  145. osoba ord;
  146. cout <<"\n";
  147.  
  148. while (a<n || !IsEmptyQ(red)) {
  149. if (!a) {
  150. ord=polje[a];
  151. a++;
  152. cout <<"Prvi pacijent je usao u ordinaciju.\n";
  153. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  154. cout << "\nNjegov prioritet je " << ord.a << ".";
  155. }
  156. else if (a<n) {
  157. if (ord.y>polje[a].x) {
  158. ord.y-=polje[a].x;
  159. cout << "Dosao je novi pacijent u cekaonicu";
  160. cout << "\nNjegov prioritet je: " << polje[a].a << ".";
  161.  
  162. mjesto=provjera(polje[a].a, br);
  163. if (mjesto>=0) {
  164. provjera(5, mjesto);
  165. EnQueueQ(polje[a], red);
  166. provjera(5, br-mjesto);
  167. if (mjesto) cout << "\nPacijent je preskocio " << br-mjesto << " pacijenta/e u redu jer ima veci prioritet.";
  168. else cout << "\nPacijent je dosao na celo reda jer ima najveci prioritet.";
  169. }
  170. else EnQueueQ(polje[a], red);
  171.  
  172. br++;
  173. a++;
  174. cout << "\nU cekaonici je trenutno " << br << " pacijenta";
  175. cout << "\nPacijent u ordinaciji ce biti gotov za " << ord.y << " jedinica vremena.";
  176. }
  177. else if (ord.y<polje[a].x) {
  178. polje[a].x-=ord.y;
  179. if (IsEmptyQ(red)) {
  180. ord=polje[a];
  181. a++;
  182. }
  183. else {
  184. ord=FrontQ(red);
  185. DeQueueQ(red);
  186. br--;
  187. }
  188. cout << "Novi pacijent je u ordinaciji.\n";
  189. cout << "U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  190. cout << "\nNjegov prioritet je " << ord.a << ".";
  191. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  192. }
  193. else {
  194. cout << "Novi pacijent je usao u cekaonicu.";
  195. cout << "\nNjegov prioritet je " << polje[a].a << ".";
  196. mjesto=provjera(polje[a].a, br);
  197. if (mjesto>=0) {
  198. provjera(5, mjesto);
  199. EnQueueQ(polje[a], red);
  200. provjera(5, br-mjesto);
  201. if (mjesto) cout << "\nPacijent je preskocio " << br-mjesto << " pacijenta/e u redu jer ima veci prioritet.";
  202. else cout << "\nPacijent je dosao na celo reda jer ima najveci prioritet.";
  203. }
  204. else EnQueueQ(polje[a], red);
  205. a++;
  206. ord=FrontQ(red);
  207. DeQueueQ(red);
  208. cout <<"\nNovi pacijent je usao u ordinaciju.\n";
  209. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  210. cout << "\nNjegov prioritet je " << ord.a << ".";
  211. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  212. }
  213. }
  214. else {
  215. ord=FrontQ(red);
  216. DeQueueQ(red);
  217. cout << "Novi pacijent je usao u ordinaciju.\n";
  218. cout <<"U ordinaciji ce provesti: " << ord.y << " jedinica vremena.";
  219. br--;
  220. cout << "\nNjegov prioritet je " << ord.a << ".";
  221. cout << "\nU cekaonici je trenutno " << br << " pacijenta.";
  222. }
  223. cout << "\n\n---------------------------------------------------\n";
  224. system ("pause");
  225. cout << "---------------------------------------------------\n\n";
  226. }
  227. cout << "KRAJ SIMULACIJE SLIJEDNOG USLUZIVANJA PACIJENATA SA PRIORITETOM\n";
  228. cout << "\n---------------------------------------------------\n\n";
  229. system ("pause");
  230. vrijeme_kraj();
  231. vrijeme22=vrijeme_proteklo()/1000;
  232. }
  233.  
  234. int main()
  235.  
  236. {
  237. int izbor;
  238. srand(time(0));
  239. InitQ (red);
  240. do{
  241. system("cls");
  242. cout <<"-------------------------IZBORNIK-------------------------\n";
  243. cout <<"1. Generiranje n parova slucajnih brojeva u red.\n";
  244. cout <<"2. Posluzivanje pacijenta slijedno\n";
  245. cout <<"3. Posluzivanje pacijenta sa prioritetom\n";
  246. cout <<"4. Mjerenje vremena\n";
  247. cout <<"0. Kraj programa.\n";
  248. cout <<"----------------------------------------------------------\n";
  249. cout <<"Vas izbor = ";
  250. cin >>izbor;
  251. switch(izbor)
  252. {
  253. case 1:{
  254. cout <<"Birali ste opciju 1. Generiranje n parova slucajnih brojeva u red\n";
  255. cout <<"Unesite n = ";
  256. cin >>n;
  257. generiranje(n);
  258. cout <<"\nBrojevi su spremljeni u polje\n";
  259. system("pause");
  260.  
  261. }break;
  262. case 2:{
  263. cout <<"Birali ste opciju 2. Posluzivanje pacijenta\n";
  264. system("pause");
  265. posluzivanje1();
  266. }break;
  267. case 3:{
  268. cout <<"Birali ste opciju 3. Posluzivanje pacijenta sa prioritetom\n";
  269. posluzivanje2();
  270.  
  271. }break;
  272. case 4:{
  273. cout <<"Birali ste opciju 4. Mjerenje vremena za zadatke 2 i 3 \n";
  274. cout <<"Zelite li mjeriti zadatak 1 ili 2? ";
  275. int izb;
  276. do
  277. cin >>izb;
  278. while(izb!=1&&izb!=2);
  279. switch(izb){
  280. case 1:{
  281. cout <<"\nMjerite vrijeme za posluzivanje pacijenta slijedno: \n";
  282. cout <<"\nUkupno vrijeme izvodenja programa je: " <<vrijeme11 <<" tisucinki \n";
  283. }break;
  284. case 2:{
  285. cout <<"\nMjerite vrijeme za posluzivanje pacijenta slijedno sa prioritetom: \n";
  286. cout <<"\nUkupno vrijeme izvodenja programa je: " <<vrijeme22 <<" tisucinki \n";
  287. }break;
  288. }
  289.  
  290. system("pause");
  291. }break;
  292. }
  293. }while(izbor!=0);
  294. system("pause");
  295. return 0;
  296. }

Report this snippet  

You need to login to post a comment.