Advertisement
Guest User

Untitled

a guest
Nov 17th, 2019
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. //lista pokazivac
  2. #include <iostream>
  3.  
  4. using namespace std;
  5.  
  6. struct ljubimci_pok{
  7. int sifra, cijena;
  8. string naziv, vrsta, datum_dostave;
  9.  
  10. ljubimci_pok *slijedeci;
  11. };
  12.  
  13. int unos(ljubimci_pok *glv, //potrebna glava liste
  14. int zifra, int cijena,
  15. string datum_dostave,
  16. string naziv,
  17. string vrsta)
  18. {
  19.  
  20. ljubimci_pok *novi=new ljubimci_pok;
  21.  
  22. novi->cijena=cijena; //pridružujemo unesene podatke podatkovnom dijlu èvora
  23. novi->sifra = zifra;
  24. novi->vrsta=vrsta;
  25. novi->naziv=naziv;
  26. novi->datum_dostave=datum_dostave;
  27.  
  28. if(glv->slijedeci==NULL) //ako je lista prazna dodaj novi zapis na prvo mjesto
  29. {
  30. glv->slijedeci=novi;
  31. novi->slijedeci=NULL;
  32. }
  33.  
  34. else
  35. { //ako lista nije prazna dodaj novi zapis na pocetak liste
  36. novi->slijedeci=glv->slijedeci;
  37. glv->slijedeci=novi;
  38. }
  39.  
  40. ljubimci_pok *trenutni=glv->slijedeci;
  41. while(trenutni->slijedeci!=NULL && trenutni->sifra!=zifra)
  42. trenutni=trenutni->slijedeci;
  43.  
  44. if (trenutni->slijedeci==NULL && trenutni->sifra!=zifra) //ako ova funkcija ne može naæi zapis onda stvarno ne znam tko može
  45. {
  46. return 0;
  47. }
  48.  
  49. else
  50. {
  51. return 1;
  52. }
  53. }
  54.  
  55. void ispis(ljubimci_pok *glv)
  56. {
  57. if(glv->slijedeci == NULL) //ako je lista prazna
  58. {
  59. cout << "\nNema ljubimaca u listi, prvo dodaj neke.\n";
  60. return;
  61. }
  62.  
  63. ljubimci_pok *trenutni=glv->slijedeci;
  64.  
  65. cout << "\nUneseni su sljedeci ljubimci:\n\n";
  66.  
  67. while(trenutni!=NULL){
  68. cout << "\nSifra: " << trenutni->sifra;
  69. cout << "\nVrsta: " << trenutni->vrsta;
  70. cout << "\nNaziv: " << trenutni->naziv;
  71. cout << "\nCijena: " << trenutni->cijena;
  72. cout << "\nDatum dostave: " << trenutni->datum_dostave << "\n-----------------------\n\n";
  73. trenutni=trenutni->slijedeci; //pomicanje kroz listu
  74. }
  75. }
  76.  
  77. void trazi(ljubimci_pok *glv)
  78. {
  79. int dan, mjesec, godina, brojalo=0;
  80. string temp;
  81.  
  82. ljubimci_pok *trenutni=glv->slijedeci;
  83.  
  84. if(trenutni == NULL) //ako je lista prazna
  85. {
  86. cout << "\nNema ljubimaca listi, prvo dodaj neke.\n";
  87. return;
  88. }
  89.  
  90. while(trenutni!=NULL)
  91. {
  92. temp=trenutni->datum_dostave.substr(0,2);
  93. dan=atoi(temp.c_str());
  94. temp=trenutni->datum_dostave.substr(3,2);
  95. mjesec=atoi(temp.c_str());
  96. temp=trenutni->datum_dostave.substr(6,4);
  97. godina=atoi(temp.c_str());
  98.  
  99. if(((dan>=23 && mjesec>=9 && godina>=2012) || (mjesec>9 && godina>=2012)) || (godina>2012)) //provjera da li je ljubimac dostavljen nakon 23.rujna 2012
  100. {
  101. cout << "\nSifra: " << trenutni->sifra;
  102. cout << "\nVrsta: " << trenutni->vrsta;
  103. cout << "\nNaziv: " << trenutni->naziv;
  104. cout << "\nCijena: " << trenutni->cijena;
  105. cout << "\nDatum dostave: " << trenutni->datum_dostave << "\n------------------------\n\n";
  106. brojalo++;
  107. }
  108. trenutni=trenutni->slijedeci;
  109. }
  110.  
  111. cout << "Postoji u bazi podataka " << brojalo << " zivotinja koje su dostavljene nakon 23.rujna 2012.\n\n";
  112. }
  113.  
  114. int brisi_naziv(ljubimci_pok *glv, string ime)
  115. {
  116. ljubimci_pok *prethodni=glv;
  117. ljubimci_pok *trenutni=glv->slijedeci;
  118. int brojalo=0;
  119.  
  120. while (trenutni->slijedeci!=NULL)
  121. {
  122. if(trenutni->naziv==ime)
  123. {
  124. prethodni->slijedeci=trenutni->slijedeci;
  125. free(trenutni);
  126. brojalo++;
  127. break;
  128. }
  129. prethodni=trenutni;
  130. trenutni=trenutni->slijedeci;
  131. }
  132.  
  133. if (brojalo==0)
  134. {
  135. cout << "\nTrazeni zapis nije nadjen u listi.\n";
  136. return 3; //nema smisla traziti da li je "brisanje" uspjesno ako nista ne brise (dio ispod return 1 ili 0)
  137. }
  138.  
  139. trenutni=glv->slijedeci;
  140. while(trenutni->slijedeci!=NULL && trenutni->naziv!=ime)
  141. trenutni=trenutni->slijedeci;
  142.  
  143. if(trenutni->slijedeci==NULL && trenutni->naziv!=ime)
  144. return 1;
  145.  
  146. else
  147. return 0;
  148. }
  149.  
  150. int brisi_vrstu(ljubimci_pok *glv, string ime)
  151. {
  152. ljubimci_pok *prethodni=glv;
  153. ljubimci_pok *trenutni=glv->slijedeci;
  154. int brojalo=0;
  155.  
  156. while (trenutni->slijedeci!=NULL)
  157. {
  158. if(trenutni->vrsta==ime)
  159. {
  160. prethodni->slijedeci=trenutni->slijedeci;
  161. free(trenutni);
  162. brojalo++;
  163. trenutni=glv;
  164. }
  165. prethodni=trenutni;
  166. trenutni=trenutni->slijedeci;
  167. }
  168.  
  169. if (brojalo==0)
  170. {
  171. cout << "\nTrazeni zapis nije nadjen u listi.\n";
  172. return 3; //nema smisla traziti da li je "brisanje" uspjesno ako nista ne brise (dio ispod - return 1 ili 0)
  173. }
  174.  
  175. trenutni=glv->slijedeci;
  176. while(trenutni->slijedeci!=NULL && trenutni->vrsta!=ime)
  177. trenutni=trenutni->slijedeci;
  178.  
  179. if (trenutni->slijedeci==NULL && trenutni->vrsta!=ime)
  180. return 1;
  181. else
  182. return 0;
  183. }
  184.  
  185. int cmp(ljubimci_pok *a, ljubimci_pok *b)
  186. {
  187. return a->cijena - b->cijena;
  188. }
  189.  
  190. ljubimci_pok *m_sort(ljubimci_pok *lista)
  191. {
  192. ljubimci_pok *p, *q, *e, *rep;
  193. int psize, insize, nmerges, qsize, i;
  194.  
  195. insize=1;
  196.  
  197. while(1)
  198. {
  199. p=lista;
  200. lista=NULL;
  201. rep=NULL;
  202.  
  203. nmerges=0;
  204.  
  205. while (p)
  206. {
  207. nmerges++;
  208. q=p;
  209. psize=0;
  210. for (i=0; i<insize; i++)
  211. {
  212. psize++;
  213. q=q->slijedeci;
  214. if (!q) break;
  215. }
  216. qsize=insize;
  217.  
  218. while (psize>0 || (qsize>0 && q))
  219. {
  220. if (psize==0)
  221. {
  222. e=q; q=q->slijedeci; qsize--;
  223. }
  224. else if (qsize==0 || !q)
  225. {
  226. e=p; p=p->slijedeci; psize--;
  227. }
  228. else if (cmp(p,q) <=0)
  229. {
  230. e=p; p=p->slijedeci; psize--;
  231. }
  232. else
  233. {
  234. e=q; q=q->slijedeci; qsize--;
  235. }
  236.  
  237. if (rep)
  238. {
  239. rep->slijedeci=e;
  240. }
  241. else
  242. {
  243. lista=e;
  244. }
  245. rep=e;
  246. }
  247. p=q;
  248. }
  249. rep->slijedeci=NULL;
  250.  
  251. if (nmerges<=1)
  252. {
  253. return lista;
  254. }
  255. insize *= 2;
  256. }
  257. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement