Guest User

Untitled

a guest
Jun 19th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.29 KB | None | 0 0
  1. //GLAVNI PROGRAM
  2.  
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <cstring>
  6. using namespace std;
  7.  
  8. //#include "lista_pokazivac.h"
  9. #include "lista_polje.h"
  10.  
  11. int Dodaj (pacijent x, LISTA *L)
  12. {
  13. if ( LocateL(x, L) == EndL(L) )
  14. {
  15. InsertL(x, EndL(L), L);
  16. return 1;
  17. }
  18. else return 0;
  19. }
  20. int Brisi (int mbroj, LISTA *L)
  21. {
  22. pozicija p = FirstL(L);
  23. pacijent pom;
  24. while (p != EndL(L))
  25. {
  26. pom = RetrieveL(p, L);
  27. if (pom.mbroj == mbroj)
  28. {
  29. DeleteL(p, L);
  30. return 1;
  31. }
  32. p = NextL(p, L);
  33. }
  34. return 0;
  35. }
  36.  
  37. void Ispis (LISTA *L)
  38. {
  39. pacijent polje[1000];
  40. int brojac = 0;
  41. pacijent pom;
  42.  
  43.  
  44. pozicija p = FirstL(L);
  45. while (p != EndL(L))
  46. {
  47. polje[brojac] = RetrieveL(p, L);
  48. brojac = brojac + 1;
  49. p = NextL(p, L);
  50. }
  51.  
  52.  
  53. for (int i = 0; i < brojac; i++)
  54. {
  55. for (int j = 0; j < brojac - i - 1; j++)
  56. {
  57. if (polje[j].mbroj > polje[j+1].mbroj)
  58. {
  59. pom = polje[j];
  60. polje[j] = polje[j+1];
  61. polje[j+1] = pom;
  62. }
  63. }
  64. }
  65.  
  66.  
  67. for (int i = 0; i < brojac; i++) cout << "\nMaticni broj: " << polje[i].mbroj <<
  68. "\nIme i prezime: " << polje[i].prezime_ime << "\nDob: " << polje[i].starost << "\n";
  69. }
  70.  
  71. void Pretrazi (LISTA *L)
  72. {
  73. pozicija p = FirstL(L);
  74. pacijent pom;
  75. int brojac = 0;
  76.  
  77. cout << "\n\nPopis pacijenata mladjih od 18 godina:\n";
  78. while (p != EndL(L))
  79. {
  80. pom = RetrieveL(p, L);
  81. if (pom.starost < 18)
  82. {
  83. brojac = brojac + 1;
  84. cout << "\nMaticni broj: " << pom.mbroj << "\nIme i prezime: " << pom.prezime_ime <<
  85. "\nDob: " << pom.starost << "\n\n";
  86. }
  87. p = NextL(p, L);
  88. }
  89. cout << "\nBroj osoba mladjih od 18 godina: " << brojac << "\n\n";
  90. }
  91.  
  92. int main()
  93. {
  94. LISTA *lista = new LISTA;
  95. InitL(lista);
  96.  
  97. int izbor, mbroj;
  98. pacijent x;
  99.  
  100. do {
  101. cout << "\nOdaberite opciju:\n1. Unos pacijenata\n2. Ispis pacijenata\
  102. n3. Ispis pacijenata mladjih od 18 godina i njihov broj\n4. Brisanje podataka o pacijentu iz evidencije\
  103. n5. Izlaz\nVas izbor: ";
  104. cin >> izbor;
  105. switch (izbor)
  106. {
  107. case 1:
  108.  
  109. cout << "\nMaticni broj pacijenta: ";
  110. cin >> x.mbroj;
  111. cout << "Ime i prezime: ";
  112. cin.ignore();
  113. cin.getline(x.prezime_ime, 50);
  114. cout << "Dob pacijenta: ";
  115. cin >> x.starost;
  116.  
  117. if ( ! Dodaj(x, lista) )
  118. cout << "\nPacijent s tim matičnim brojem je vec dodan";
  119. cout << endl << endl;
  120. break;
  121. case 2:
  122. Ispis(lista);
  123. break;
  124. case 3:
  125. Pretrazi(lista);
  126. break;
  127. case 4:
  128. cout << "\nMaticni broj pacijenta kojeg zelite obrisati iz liste: ";
  129. cin >> mbroj;
  130. if (! Brisi(mbroj, lista) )
  131. cout << "\nNe postoji pacijent s tim maticnim brojem";
  132. cout << endl << endl;
  133. }
  134. } while (izbor != 5);
  135.  
  136. DeleteAllL(lista);
  137. system("pause");
  138. return 0;
  139. }
  140.  
  141. //lista_pokazivac.h
  142.  
  143. struct pacijent {
  144. int mbroj, starost;
  145. char prezime_ime[50];
  146. };
  147.  
  148. struct LISTA {
  149. pacijent el;
  150. LISTA *sljedeci;
  151. };
  152.  
  153.  
  154. typedef LISTA* pozicija;
  155.  
  156.  
  157. void InitL (LISTA *L)
  158. {
  159. L->sljedeci = NULL;
  160. }
  161. LISTA * FirstL (LISTA *L)
  162. {
  163. return L;
  164. }
  165. LISTA * EndL (LISTA *L)
  166. {
  167. while (L->sljedeci)
  168. L = L->sljedeci;
  169. return L;
  170. }
  171. LISTA * NextL (pozicija p, LISTA *L)
  172. {
  173. return p->sljedeci;
  174. }
  175. LISTA * PreviousL (pozicija p, LISTA *L)
  176. {
  177. while (L->sljedeci)
  178. {
  179. if (L->sljedeci == p)
  180. return L;
  181. L = L->sljedeci;
  182. }
  183. return 0;
  184. }
  185. pacijent RetrieveL (pozicija p, LISTA *L)
  186. {
  187. return (p->sljedeci)->el;
  188. }
  189. pozicija LocateL (pacijent x, LISTA *L)
  190. {
  191. while (L->sljedeci)
  192. {
  193. if ((L->sljedeci)->el.mbroj == x.mbroj)
  194. return L;
  195. L = L->sljedeci;
  196. }
  197. return L;
  198. }
  199. int InsertL (pacijent x, pozicija p, LISTA *L)
  200. {
  201. pozicija p2 = new LISTA;
  202. p2->el = x;
  203. p2->sljedeci = p->sljedeci;
  204. p->sljedeci = p2;
  205. }
  206. void DeleteL (pozicija p, LISTA *L) {
  207. pozicija p2 = (p->sljedeci)->sljedeci;
  208. delete p->sljedeci;
  209. p->sljedeci = p2;
  210. }
  211. void DeleteAllL (LISTA *L)
  212. {
  213. pozicija p;
  214. while (L)
  215. {
  216. p = L;
  217. L = L->sljedeci;
  218. delete p;
  219. }
  220. }
  221.  
  222. //lista_polje.h
  223.  
  224. struct pacijent {
  225. int mbroj, starost;
  226. char prezime_ime[50];
  227. };
  228.  
  229. struct LISTA {
  230. pacijent polje[1000];
  231. int cursor;
  232. };
  233.  
  234. typedef int pozicija;
  235.  
  236.  
  237. int FirstL (LISTA *L)
  238. {
  239. return 0;
  240. }
  241. int EndL (LISTA *L)
  242. {
  243. return L->cursor;
  244. }
  245. int NextL (pozicija p, LISTA *L)
  246. {
  247. if (p < L->cursor)
  248. return p + 1;
  249. }
  250. pozicija previousL (pozicija p, LISTA *L)
  251. {
  252. if (p > 0)
  253. return p - 1;
  254. }
  255. pozicija LocateL (pacijent x, LISTA *L)
  256. {
  257. for (int i = 0; i < L->cursor; i++)
  258. {
  259. if (L->polje[i].mbroj == x.mbroj)
  260. return i;
  261. }
  262. return L->cursor;
  263. }
  264. pacijent RetrieveL (pozicija p, LISTA *L)
  265. {
  266. return L->polje[p];
  267. }
  268. void DeleteAllL (LISTA *L)
  269. {
  270. L->cursor = 0;
  271. }
  272. void DeleteL (pozicija p, LISTA *L)
  273. {
  274. if (p < 0 || p >= L->cursor) return;
  275. for (int i = p; i < L->cursor - 1; i++)
  276. L->polje[i] = L->polje[i+1];
  277. L->cursor = L->cursor - 1;
  278. }
  279. void InsertL (pacijent x, pozicija p, LISTA *L)
  280. {
  281. if (p < 0 || p > L->cursor) return;
  282. L->cursor = L->cursor + 1;
  283. for (int i = L->cursor; i > p; i--)
  284. L->polje[i] = L->polje[i-1];
  285. L->polje[p] = x;
  286. }
  287. void InitL (LISTA *L)
  288. {
  289. L->cursor = 0;
  290. }
Add Comment
Please, Sign In to add comment