Posted By

mzivicnj on 11/12/12


Tagged

lista funkcija endl insertl zivotinja FirstL NextL PriviousL RetrieveLDeleteL


Versions (?)

Main datoteka


 / Published in: C++
 

U datoteci main.cpp nalazi se kojim korisnik unosi nove životinje, ispiše evidentirane životinje, pretražuje i filtrira prema datumu, briše životinje prema nazivu ili vrsti te silazno sortira pomoću metode Merge Sort.

  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int sifra;
  5.  
  6. struct zivotinja {
  7. int sifra, cij;
  8. string naziv, vrs;
  9. long int dat;
  10. };
  11.  
  12. //#include "lista_polje.h"
  13. #include "lista_pokazivac.h"
  14.  
  15. int funkcija_dod(Lista *zivot) {
  16. cout << "Unos podataka za novu zivotinju." << endl;
  17. zivotinja nov;
  18. nov.sifra = sifra++;
  19. cout << "Vrsta: " << endl;
  20. cin >> nov.vrs;
  21. cout << "Naziv: " << endl;
  22. cin >> nov.naziv;
  23. cout << "Cijena: " << endl;
  24. cin >> nov.cij;
  25. cout << "Datum: " << endl;
  26. cin >> nov.dat;
  27.  
  28. if (InsertL(nov, EndL(zivot), zivot)) {
  29. return 1;
  30. }
  31. else {
  32. return 0;
  33. }
  34. }
  35.  
  36. void funkcija_isp(Lista *zivot) {
  37. element tekuci = EndL(zivot);
  38. zivotinja zivotinje;
  39. cout << "Ispis zivotinja od najvece sifre." << endl;
  40.  
  41. do {
  42. tekuci = PreviousL(tekuci, zivot);
  43. zivotinje = RetrieveL(tekuci, zivot);
  44. cout << "Sifra: " << zivotinje.sifra << ", vrsta: " << zivotinje.vrs;
  45. cout << ", naziv: " << zivotinje.naziv << ", cijena: " << zivotinje.cij;
  46. cout << ", datum: " << zivotinje.dat << endl << endl;
  47. } while (tekuci != FirstL(zivot)); //
  48. cout << "Ispis zavrsen." << endl;
  49. }
  50.  
  51. int funkcija_brisi_naziv(Lista *zivot) {
  52. cout << "Naziv za brisanje: ";
  53. string unos;
  54. cin >> unos;
  55. int brisanje = 0;
  56. element tekuci; zivotinja zivotinje;
  57.  
  58. tekuci = FirstL(zivot);
  59.  
  60. while (tekuci != EndL(zivot)) {
  61. zivotinje = RetrieveL(tekuci, zivot);
  62. if (zivotinje.naziv == unos) {
  63. brisanje = 1;
  64. DeleteL(tekuci, zivot);
  65. }
  66. else {
  67. tekuci = NextL(tekuci, zivot);
  68. }
  69. }
  70. return brisanje;
  71. }
  72.  
  73. int funkcija_brisi_vrs(Lista *zivot) {
  74. cout << "Vrsta za brisanje: ";
  75. string unos;
  76. cin >> unos;
  77. int brisanje = 0;
  78. element tekuci; zivotinja zivotinje;
  79. tekuci = FirstL(zivot);
  80. while (tekuci != EndL(zivot)) {
  81. zivotinje = RetrieveL(tekuci, zivot);
  82. if (zivotinje.vrs == unos) {
  83. brisanje = 1;
  84. DeleteL(tekuci, zivot);
  85. }
  86. else {
  87. tekuci = NextL(tekuci, zivot);
  88. }
  89. }
  90. return brisanje;
  91. }
  92.  
  93. void funkcija_trazi_dat(Lista *zivot) {
  94. element tekuci;
  95. tekuci = FirstL(zivot);
  96. zivotinja zivotinje;
  97. cout << "Trazimo zivotinje novije 20120923." << endl;
  98. while (tekuci != EndL(zivot)) {
  99. zivotinje = RetrieveL(tekuci, zivot);
  100. if (zivotinje.dat > 20120923) {
  101. cout << "Sifra: " << zivotinje.sifra << ", vrsta: " << zivotinje.vrs;
  102. cout << ", naziv: " << zivotinje.naziv << ", cijena: " << zivotinje.cij;
  103. cout << ", datum: " << zivotinje.dat << endl << endl;
  104. }
  105. tekuci = NextL(tekuci, zivot);
  106. }
  107. cout << "Trazenje gotovo." << endl;
  108. }
  109.  
  110. void merge_sort_cij(zivotinja po[], int lijevi, int desni) {
  111. int sredina = (lijevi + desni) / 2;
  112. zivotinja temp;
  113.  
  114. if (desni - lijevi == 1) {
  115. if (po[desni].cij > po[lijevi].cij) {
  116. temp = po[desni];
  117. po[desni] = po[lijevi];
  118. po[lijevi] = temp;
  119. return;
  120. }
  121. }
  122. else if (desni == lijevi) {
  123. return;
  124. }
  125. else {
  126. merge_sort_cij(po, lijevi, sredina);
  127. merge_sort_cij(po, sredina +1, desni);
  128. int size_pomocno = desni-lijevi +1;
  129. zivotinja *po_pomocno = new zivotinja[size_pomocno];
  130. int l = lijevi;
  131. int s = sredina +1;
  132.  
  133. for (int i = 0; i < size_pomocno; i++) {
  134. if (l == sredina+1) {
  135. po_pomocno[i] = po[s]; s++;
  136. continue;
  137. }
  138. if (s == desni +1) {
  139. po_pomocno[i] = po[l]; l++;
  140. continue;
  141. }
  142.  
  143. if (po[l].cij > po[s].cij) {
  144. po_pomocno[i] = po[l];
  145. l++;
  146. }
  147. else {
  148. po_pomocno[i] = po[s];
  149. s++;
  150. }
  151. }
  152. int j = 0;
  153. for (int i = lijevi; i <= desni; i++) {
  154. po[i] = po_pomocno[j]; j++;
  155. }
  156. }
  157. }
  158.  
  159. void merge_sort_naziv(zivotinja po[], int lijevi, int desni) {
  160. int sredina = (lijevi + desni) / 2;
  161. zivotinja temp;
  162.  
  163. if (desni - lijevi == 1) {
  164. if (po[desni].naziv > po[lijevi].naziv) {
  165. temp = po[desni];
  166. po[desni] = po[lijevi];
  167. po[lijevi] = temp;
  168. return;
  169. }
  170. }
  171. else if (desni == lijevi) {
  172. return;
  173. }
  174. else {
  175. merge_sort_naziv(po, lijevi, sredina);
  176. merge_sort_naziv(po, sredina +1, desni);
  177. int size_pomocno = desni-lijevi +1;
  178. zivotinja *po_pomocno = new zivotinja[size_pomocno];
  179. int l = lijevi;
  180. int s = sredina +1;
  181.  
  182. for (int i = 0; i < size_pomocno; i++) {
  183. if (l == sredina+1) {
  184. po_pomocno[i] = po[s]; s++;
  185. continue;
  186. }
  187. if (s == desni +1) {
  188. po_pomocno[i] = po[l]; l++;
  189. continue;
  190. }
  191.  
  192. if (po[l].naziv > po[s].naziv) {
  193. po_pomocno[i] = po[l];
  194. l++;
  195. }
  196. else {
  197. po_pomocno[i] = po[s];
  198. s++;
  199. }
  200. }
  201. int j = 0;
  202. for (int i = lijevi; i <= desni; i++) {
  203. po[i] = po_pomocno[j]; j++;
  204. }
  205. }
  206. }
  207.  
  208. void funkcija_sortiraj_cjenovno(Lista *zivot) {
  209. cout << "Sortiramo po cijeni." << endl;
  210. int br = 0;
  211. element tekuci; zivotinja zivotinje;
  212. tekuci = FirstL(zivot);
  213. while (tekuci != EndL(zivot)) {
  214. br++; tekuci = NextL(tekuci, zivot);
  215. }
  216. zivotinja *po = new zivotinja[br];
  217. tekuci = FirstL(zivot);
  218. for (int i = 0; i < br; i++) {
  219. zivotinje = RetrieveL(tekuci, zivot);
  220. po[i] = zivotinje;
  221. tekuci = NextL(tekuci, zivot);
  222. }
  223. merge_sort_cij(po, 0, br-1);
  224. for (int i = 0; i < br; i++) {
  225. cout << "Sifra: " << po[i].sifra << ", vrsta: " << po[i].vrs;
  226. cout << ", naziv: " << po[i].naziv << ", cijena: " << po[i].cij;
  227. cout << ", datum: " << po[i].dat << endl << endl;
  228. }
  229. }
  230.  
  231. void funkcija_sortiraj_nazivom(Lista *zivot) {
  232. cout << "Sortiramo po nazivu." << endl;
  233. int br = 0;
  234. element tekuci; zivotinja zivotinje;
  235. tekuci = FirstL(zivot);
  236. while (tekuci != EndL(zivot)) {
  237. br++; tekuci = NextL(tekuci, zivot);
  238. }
  239. zivotinja *po = new zivotinja[br];
  240. tekuci = FirstL(zivot);
  241. for (int i = 0; i < br; i++) {
  242. zivotinje = RetrieveL(tekuci, zivot);
  243. po[i] = zivotinje;
  244. tekuci = NextL(tekuci, zivot);
  245. }
  246. merge_sort_naziv(po, 0, br-1);
  247. for (int i = 0; i < br; i++) {
  248. cout << "Sifra: " << po[i].sifra << ", vrsta: " << po[i].vrs;
  249. cout << ", naziv: " << po[i].naziv << ", cijena: " << po[i].cij;
  250. cout << ", datum: " << po[i].dat << endl << endl;
  251. }
  252. }
  253.  
  254. int main() {
  255. Lista zivot;
  256. InitL(&zivot);
  257.  
  258. sifra = 1;
  259. zivotinja ziv;
  260. ziv.sifra = sifra++;
  261. ziv.dat = 20121001;
  262. ziv.cij = 100;
  263. ziv.vrs = "pas";
  264. ziv.naziv = "maltezer";
  265. InsertL(ziv, EndL(&zivot), &zivot);
  266.  
  267. ziv.sifra = sifra++;
  268. ziv.dat = 20121101;
  269. ziv.cij = 1000;
  270. ziv.vrs = "pas";
  271. ziv.naziv = "pekinezer";
  272. InsertL(ziv, EndL(&zivot), &zivot);
  273.  
  274. ziv.sifra = sifra++;
  275. ziv.dat = 20111101;
  276. ziv.cij = 50;
  277. ziv.vrs = "pas";
  278. ziv.naziv = "cau cau";
  279. InsertL(ziv, EndL(&zivot), &zivot);
  280.  
  281. ziv.sifra = sifra++;
  282. ziv.dat = 20101111;
  283. ziv.cij = 300;
  284. ziv.vrs = "macka";
  285. ziv.naziv = "manks";
  286. InsertL(ziv, EndL(&zivot), &zivot);
  287.  
  288. ziv.sifra = sifra++;
  289. ziv.dat = 20121223;
  290. ziv.cij = 250;
  291. ziv.vrs = "macka";
  292. ziv.naziv = "perzijska";
  293. InsertL(ziv, EndL(&zivot), &zivot);
  294.  
  295. funkcija_isp(&zivot);
  296.  
  297. funkcija_dod(&zivot);
  298. funkcija_isp(&zivot);
  299.  
  300. funkcija_trazi_dat(&zivot);
  301.  
  302. funkcija_brisi_naziv(&zivot);
  303. funkcija_isp(&zivot);
  304.  
  305. funkcija_brisi_vrs(&zivot);
  306. funkcija_isp(&zivot);
  307.  
  308. funkcija_sortiraj_cjenovno(&zivot);
  309. funkcija_sortiraj_nazivom(&zivot);
  310. system("pause");
  311.  
  312. return 0;
  313. }

Report this snippet  

You need to login to post a comment.