Posted By

ikoren on 11/11/12


Tagged

lista pokazivac Strukture polje


Versions (?)

strukture podataka (Z1_program)


 / Published in: C++
 

Program nakon unijetih podataka o zivotinjama u listu, nudi niz opcija nad istom. U program su ukljucene datoteke zaglavlja listapolje.h i listapokazivac.h u kojima se nalaze implementacije liste pomocu polja i pokazivaca.

  1. #include <iostream>
  2. #include <ctime>
  3. #include <string>
  4.  
  5. //#include "lista_pokazivac.h"
  6. #include "lista_polje.h"
  7.  
  8. using namespace std;
  9.  
  10. int a_zadatak (Lista *lista) {
  11. kucni_ljubimci nova;
  12.  
  13. cout << "Naziv: ";
  14. cin >> nova.naziv;
  15. cout << "Vrsta: ";
  16. cin >> nova.vrsta;
  17. cout << "Cijena: ";
  18.  
  19. int cijena = time(NULL);
  20. nova.cijena = rand() % 1000;
  21. cout << nova.cijena << endl;
  22.  
  23. cout << "Datum (u obliku: gggg/mm/dd) :";
  24. cin >> nova.datum;
  25.  
  26. int sifra = time(NULL);
  27. srand(sifra);
  28. nova.sifra = rand();
  29. cout << "Sifra: " << nova.sifra << endl << endl;
  30.  
  31. bool uspjeh = true;
  32. uspjeh = InsertL(nova, EndL(lista) , lista);
  33. if (uspjeh) {
  34. return 1;
  35. }
  36. else {
  37. return 0;
  38. }
  39. }
  40.  
  41. void a2_zadatak (Lista *lista) {
  42. element tek;
  43. kucni_ljubimci za_ispis;
  44.  
  45. tek = EndL(lista);
  46.  
  47. do {
  48. tek = PreviousL(tek, lista);
  49. za_ispis = RetrieveL(tek, lista);
  50.  
  51. cout << "Naziv: " << za_ispis.naziv << endl;
  52. cout << "Vrsta: " << za_ispis.vrsta << endl;
  53. cout << "Datum: " << za_ispis.datum << endl;
  54. cout << "Cijena: " << za_ispis.cijena << endl;
  55. cout << "Sifra: " << za_ispis.sifra << endl;
  56. cout << endl;
  57. } while (tek != FirstL(lista));
  58. }
  59.  
  60. void b_zadatak (Lista *lista) {
  61. int brojac = 0;
  62.  
  63. element tek = FirstL(lista);
  64. kucni_ljubimci za_ispis;
  65.  
  66. while (tek != EndL(lista)) {
  67. za_ispis = RetrieveL(tek, lista);
  68. if (za_ispis.datum > "2012/09/23") {
  69. cout << "Naziv: " << za_ispis.naziv << endl;
  70. cout << "Vrsta: " << za_ispis.vrsta << endl;
  71. cout << "Datum: " << za_ispis.datum << endl;
  72. cout << "Cijena: " << za_ispis.cijena << endl;
  73. cout << "Sifra: " << za_ispis.sifra << endl;
  74. cout << endl;
  75. brojac = brojac +1;
  76. }
  77. tek = NextL(tek, lista);
  78. }
  79. cout << "Ukupan broj zivotinja dostavljenih nakon 23.9.2012.: " << brojac << endl;
  80. }
  81.  
  82.  
  83. int c_zadatak_naziv (Lista *lista) {
  84. element tek = FirstL(lista);
  85. kucni_ljubimci za_brisanje;
  86. bool brisanje = false;
  87.  
  88. cout << "Naziv zivotinja koje zelite obrisati iz evidencije: ";
  89. string naziv;
  90. cin >> naziv;
  91. element pomocni;
  92. while (tek != EndL(lista)) {
  93. za_brisanje = RetrieveL(tek, lista);
  94. if (za_brisanje.naziv == naziv) {
  95. pomocni = tek;
  96. tek = FirstL(lista);
  97. DeleteL(pomocni, lista);
  98. brisanje = true;
  99. }
  100. tek = NextL(tek, lista);
  101. }
  102.  
  103. if (brisanje) {
  104. return 1;
  105. }
  106. else {
  107. return 0;
  108. }
  109. }
  110.  
  111.  
  112. int c_zadatak_vrsta (Lista *lista) {
  113. element tek = FirstL(lista);
  114. kucni_ljubimci za_brisanje;
  115. bool brisanje = false;
  116.  
  117. cout << "Vrsta zivotinja koje zelite obrisati iz evidencije: ";
  118. string vrsta;
  119. cin >> vrsta;
  120.  
  121. while (tek != EndL(lista)) {
  122. za_brisanje = RetrieveL(tek, lista);
  123. if (za_brisanje.vrsta == vrsta) {
  124. DeleteL(tek, lista);
  125. brisanje = true;
  126. }
  127. else {
  128. tek = NextL(tek, lista);
  129. }
  130. }
  131.  
  132. if (brisanje) {
  133. return 1;
  134. }
  135. else {
  136. return 0;
  137. }
  138. }
  139.  
  140. void ispis_obican (Lista *lista) {
  141. element tek;
  142. kucni_ljubimci za_ispis;
  143.  
  144. tek = FirstL(lista);
  145.  
  146. while (tek != EndL(lista)) {
  147. za_ispis = RetrieveL(tek, lista);
  148. cout << "Naziv: " << za_ispis.naziv << endl;
  149. cout << "Vrsta: " << za_ispis.vrsta << endl;
  150. cout << "Datum: " << za_ispis.datum << endl;
  151. cout << "Cijena: " << za_ispis.cijena << endl;
  152. cout << "Sifra: " << za_ispis.sifra << endl;
  153. cout << endl;
  154. tek = NextL(tek, lista);
  155. }
  156. }
  157.  
  158. void d_zadatak_cijena (kucni_ljubimci polje[], int lijevi, int desni) {
  159.  
  160. int sredina = (lijevi + desni) / 2;
  161. kucni_ljubimci temp;
  162.  
  163. if (desni - lijevi == 1) {
  164. if (polje[desni].cijena > polje[lijevi].cijena) {
  165. temp = polje[desni];
  166. polje[desni] = polje[lijevi];
  167. polje[lijevi] = temp;
  168. return;
  169. }
  170. }
  171. else if (desni == lijevi) {
  172. return;
  173. }
  174. else {
  175. d_zadatak_cijena(polje, lijevi, sredina);
  176. d_zadatak_cijena(polje, sredina +1, desni);
  177.  
  178. int size_pomocno = desni-lijevi +1;
  179. kucni_ljubimci *polje_pomocno = new kucni_ljubimci[size_pomocno];
  180. int l = lijevi;
  181. int s = sredina +1;
  182.  
  183. for (int i = 0; i < size_pomocno; i++) {
  184. if (l == sredina+1) {
  185. polje_pomocno[i] = polje[s]; s++;
  186. continue;
  187. }
  188. if (s == desni +1) {
  189. polje_pomocno[i] = polje[l]; l++;
  190. continue;
  191. }
  192.  
  193. if (polje[l].cijena > polje[s].cijena) {
  194. polje_pomocno[i] = polje[l];
  195. l++;
  196. }
  197. else {
  198. polje_pomocno[i] = polje[s];
  199. s++;
  200. }
  201. }
  202.  
  203. int j = 0;
  204. for (int i = lijevi; i <= desni; i++) {
  205. polje[i] = polje_pomocno[j]; j++;
  206. }
  207. }
  208. }
  209.  
  210.  
  211. void d_zadatak_naziv (kucni_ljubimci polje[], int lijevi, int desni) {
  212. int sredina = (lijevi + desni) / 2;
  213. kucni_ljubimci temp;
  214. if (desni - lijevi == 1) {
  215. if (polje[desni].naziv > polje[lijevi].naziv) {
  216. temp = polje[desni];
  217. polje[desni] = polje[lijevi];
  218. polje[lijevi] = temp;
  219. return;
  220. }
  221. }
  222.  
  223. else if (desni == lijevi) {
  224. return;
  225. }
  226.  
  227. else {
  228. d_zadatak_naziv(polje, lijevi, sredina);
  229. d_zadatak_naziv(polje, sredina +1, desni);
  230.  
  231. int size_pomocno = desni-lijevi +1;
  232. kucni_ljubimci *polje_pomocno = new kucni_ljubimci[size_pomocno];
  233.  
  234. int l = lijevi;
  235. int s = sredina +1;
  236.  
  237. for (int i = 0; i < size_pomocno; i++) {
  238. if (l == sredina+1) {
  239. polje_pomocno[i] = polje[s]; s++;
  240. continue;
  241. }
  242. if (s == desni +1) {
  243. polje_pomocno[i] = polje[l]; l++;
  244. continue;
  245. }
  246.  
  247. if (polje[l].naziv > polje[s].naziv) {
  248. polje_pomocno[i] = polje[l];
  249. l++;
  250. }
  251. else {
  252. polje_pomocno[i] = polje[s];
  253. s++;
  254. }
  255. }
  256.  
  257. int j = 0;
  258. for (int i = lijevi; i <= desni; i++) {
  259. polje[i] = polje_pomocno[j]; j++;
  260. }
  261. }
  262. }
  263.  
  264.  
  265. void d_zadatak (Lista *lista) {
  266. int ukupno = 0;
  267. element tek = FirstL(lista);
  268.  
  269. while (tek != EndL(lista)) {
  270. tek = NextL(tek, lista);
  271. ukupno += 1;
  272. }
  273.  
  274. kucni_ljubimci *pomocno_polje = new kucni_ljubimci[ukupno];
  275.  
  276. tek = FirstL(lista);
  277. for (int i = 0; i < ukupno; i++) {
  278. pomocno_polje[i] = RetrieveL(tek, lista);
  279. tek = NextL(tek, lista);
  280. }
  281.  
  282. d_zadatak_naziv(pomocno_polje, 0, ukupno-1);
  283.  
  284. DeleteAll(lista);
  285. for (int i = 0; i < ukupno; i++) {
  286. InsertL(pomocno_polje[i], EndL(lista), lista);
  287. }
  288.  
  289. cout << "-Ispis silazno sortirane liste-" << endl << endl;
  290. ispis_obican(lista);
  291. }
  292.  
  293.  
  294. void d2_zadatak(Lista *lista) {
  295. int ukupno = 0;
  296. element tek = FirstL(lista);
  297.  
  298. while (tek != EndL(lista)) {
  299. tek = NextL(tek, lista);
  300. ukupno += 1;
  301. }
  302.  
  303. kucni_ljubimci *pomocno_polje = new kucni_ljubimci[ukupno];
  304.  
  305. tek = FirstL(lista);
  306. for (int i = 0; i < ukupno; i++) {
  307. pomocno_polje[i] = RetrieveL(tek, lista);
  308. tek = NextL(tek, lista);
  309. }
  310.  
  311. d_zadatak_cijena(pomocno_polje, 0, ukupno-1);
  312.  
  313. DeleteAll(lista);
  314. for (int i = 0; i < ukupno; i++) {
  315. InsertL(pomocno_polje[i], EndL(lista), lista);
  316. }
  317.  
  318. cout << "-Ispis silazno sortirane liste-" << endl << endl;
  319. ispis_obican(lista);
  320. }
  321.  
  322.  
  323. int main() {
  324. Lista kucni_ljubimci;
  325. InitL(&kucni_ljubimci);
  326. int unos, izbor;
  327. bool prvi = false;
  328.  
  329. cout << "Dobar dan! Dobro dosli u trgovinu kucnih ljubimaca. " << endl;
  330. do {
  331. cout << endl << "-----------------------------IZBORNIK-----------------------------" << endl;
  332. cout << "1. Unos zivotinja" << endl;
  333. cout << "2. Ispis sadrzaja" << endl;
  334. cout << "3. Pretrazivanje i ispis zivotinja dostavljenih nakon 23.9.2012." << endl;
  335. cout << "4. Brisanje zivotinja prema nazivu" << endl;
  336. cout << "5. Brisanje zivotinja prema vrsti" << endl;
  337. cout << "6. Sortiranje prema nazivu zivotinja" << endl;
  338. cout << "7. Sortiranje prema cijeni zivotinja" << endl;
  339. cout << "8. Izlaz iz programa" << endl;
  340. cin >> izbor;
  341. cout << endl;
  342.  
  343. switch (izbor) {
  344. case 1: prvi = true;
  345. cout << "----------Unos zivotinja----------" << endl << endl;
  346. do {
  347. cout << "Koliko zapisa za evidentiranje kucnih ljubimaca zelite unijeti? <min 5> " ;
  348. cin >> unos;
  349. } while (unos < 5);
  350. cout << endl << endl;
  351.  
  352. for (int i=0; i<unos; i++) {
  353. a_zadatak(&kucni_ljubimci);
  354. }
  355. cout << endl;
  356. break;
  357. case 2: if (prvi == false) {
  358. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  359. break;
  360. }
  361. else {
  362. cout << "----------Ispis sadrzaja----------" << endl << endl;
  363. cout << "-Ispis unijetih zivotinja unatrag-" << endl << endl;
  364. a2_zadatak(&kucni_ljubimci);
  365. cout << endl;
  366. break;
  367. }
  368. case 3: if (prvi == false) {
  369. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  370. break;
  371. }
  372. else {
  373. cout << "----------Ispis zivotinja dostavljenih nakon 23.9.2012.----------" << endl << endl;
  374. b_zadatak(&kucni_ljubimci);
  375. cout << endl;
  376. break;
  377. }
  378. case 4: if (prvi == false) {
  379. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  380. break;
  381. }
  382. else {
  383. cout << "----------Brisanje zivotinja prema nazivu----------" << endl << endl;
  384. c_zadatak_naziv(&kucni_ljubimci);
  385. cout << endl;
  386. cout << "Nakon brisanja, u evidenciji se nalaze slijedece zivotinje: " << endl << endl;
  387. ispis_obican(&kucni_ljubimci);
  388. cout << endl;
  389. break;
  390. }
  391. case 5: if (prvi == false) {
  392. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  393. break;
  394. }
  395. else {
  396. cout << "----------Brisanje zivotinja po vrsti----------" << endl;
  397. c_zadatak_vrsta(&kucni_ljubimci);
  398. cout << endl;
  399. cout << "Nakon brisanja, u evidenciji se nalaze slijedece zivotinje: " << endl << endl;
  400. ispis_obican(&kucni_ljubimci);
  401. cout << endl;
  402. break;
  403. }
  404. case 6: if (prvi == false) {
  405. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  406. break;
  407. }
  408. else {
  409. cout << "----------Sortiranje zivotinja prema nazivu----------" << endl << endl;
  410. d_zadatak(&kucni_ljubimci);
  411. break;
  412. }
  413. case 7: if (prvi == false) {
  414. cout << "Prvo morate odabrati mogucnost 1. " << endl;
  415. break;
  416. }
  417. else {
  418. cout << "----------Sortiranje zivotinja prema cijeni----------" << endl << endl;
  419. d2_zadatak(&kucni_ljubimci);
  420. break;
  421. }
  422. case 8: break;
  423. default: cout << "Pogresan unos!" << endl;
  424. }
  425. } while (izbor !=8);
  426. system("pause");
  427. return 0;
  428. }

Report this snippet  

You need to login to post a comment.