Posted By

lblazekfoihr on 11/12/12


Tagged

listapokazivaci listapolja


Versions (?)

glavni program


 / Published in: C++
 

Ovdje možete vidjeti glavni dio mog programa.

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_pokazivaci.h"
  4.  
  5. using namespace std;
  6. int sifra = 1;
  7. int dodaj_zivotinju(Lista *l) {
  8. zivotinja ziv;
  9. ziv.sifra = sifra;
  10. cout << " Zivotinja " << "[" << sifra << "]" << endl << endl;
  11. cout << " Sifra: ";
  12. cout << ziv.sifra <<endl;
  13. cout << " Vrsta: ";
  14. cin >> ziv.vrsta;
  15. cout << " Naziv: ";
  16. cin >> ziv.naziv;
  17. cout << " Datum (YYYYMMDD): ";
  18. cin >> ziv.datum;
  19. cout << " Cijenu: ";
  20. cin >> ziv.cijena;
  21. sifra++;
  22. if(InsertL(ziv, EndL(l), l) == true) {
  23. return 1;
  24. }
  25. else {
  26. return 0;
  27. }}
  28. void ispisi_zivotinje(Lista *l) {
  29. element tekuci = EndL(l);
  30. zivotinja ziv;
  31. while (1) {
  32. tekuci = PreviousL(tekuci, l);
  33. if (tekuci == PreviousL(FirstL(l), l)) {
  34. return;
  35. }
  36. ziv = RetrieveL(tekuci, l);
  37. cout << ziv.sifra << endl;
  38. cout << ziv.vrsta << endl;
  39. cout << ziv.naziv << endl;
  40. cout << ziv.datum << endl;
  41. cout << ziv.cijena << endl;
  42. cout << endl;
  43. }}
  44. int pretrazi(Lista *l) {
  45. int ukupno = 0;
  46. element tekuci = FirstL(l);
  47. zivotinja vrijeme;
  48. while (tekuci != EndL(l)) {
  49. vrijeme = RetrieveL(tekuci, l);
  50. if (vrijeme.datum > "20120923") {
  51. ukupno++;
  52. cout << vrijeme.sifra << endl;
  53. cout << vrijeme.vrsta << endl;
  54. cout << vrijeme.naziv << endl;
  55. cout << vrijeme.datum << endl;
  56. cout << vrijeme.cijena << endl;
  57. cout << endl;
  58. }
  59. tekuci = NextL(tekuci, l);
  60. }
  61. return ukupno;
  62. }
  63. int brisi_sve_naziv(Lista *l) {
  64. string naziv_zivotinje;
  65. cout << "Unesi naziv zivotinje koju zelis obrisati: ";
  66. cin >> naziv_zivotinje;
  67. int uspjeh = 0;
  68. element tekuci = FirstL(l);
  69. zivotinja obrisati;
  70. while (tekuci != EndL(l)) {
  71. obrisati = RetrieveL(tekuci, l);
  72. if (obrisati.naziv == naziv_zivotinje) {
  73. DeleteL(LocateL(obrisati, l), l);
  74. uspjeh = 1;
  75. }
  76. else {
  77. tekuci = NextL(tekuci, l);
  78. }}
  79. return uspjeh;
  80. }
  81. void sort_po_cijena(zivotinja polje[], int lijevi, int desni) {
  82. int sredina = (lijevi + desni) / 2;
  83. zivotinja temp;
  84. if (desni - lijevi == 1) {
  85. if (polje[desni].cijena > polje[lijevi].cijena) {
  86. temp = polje[desni];
  87. polje[desni] = polje[lijevi];
  88. polje[lijevi] = temp;
  89. return;
  90. }}
  91. else if (desni == lijevi) {
  92. return;
  93. }
  94. else {
  95. sort_po_cijena(polje, lijevi, sredina);
  96. sort_po_cijena(polje, sredina +1, desni);
  97. int size_pomocno = desni-lijevi +1;
  98. zivotinja *polje_pomocno = new zivotinja[size_pomocno];
  99. int l = lijevi;
  100. int s = sredina +1;
  101.  
  102. for (int i = 0; i < size_pomocno; i++) {
  103. if (l == sredina+1) {
  104. polje_pomocno[i] = polje[s]; s++;
  105. continue;
  106. }
  107. if (s == desni +1) {
  108. polje_pomocno[i] = polje[l]; l++;
  109. continue;
  110. }
  111. if (polje[l].cijena > polje[s].cijena) {
  112. polje_pomocno[i] = polje[l];
  113. l++;
  114. }
  115. else {
  116. polje_pomocno[i] = polje[s];
  117. s++;
  118. }}
  119. int j = 0;
  120. for (int i = lijevi; i <= desni; i++) {
  121. polje[i] = polje_pomocno[j]; j++;
  122. }}}
  123. void sort_po_nazivu(zivotinja polje[], int lijevi, int desni) {
  124. int sredina = (lijevi + desni) / 2;
  125. zivotinja temp;
  126. if (desni - lijevi == 1) {
  127. if (polje[desni].naziv > polje[lijevi].naziv) {
  128. temp = polje[desni];
  129. polje[desni] = polje[lijevi];
  130. polje[lijevi] = temp;
  131. return;
  132. }}
  133. else if (desni == lijevi) {
  134. return;
  135. }
  136. else {
  137. sort_po_nazivu(polje, sredina +1, desni);
  138. int size_pomocno = desni-lijevi +1;
  139. zivotinja *polje_pomocno = new zivotinja[size_pomocno];
  140. int l = lijevi;
  141. int s = sredina +1;
  142.  
  143. for (int i = 0; i < size_pomocno; i++) {
  144. if (l == sredina+1) {
  145. polje_pomocno[i] = polje[s]; s++;
  146. continue;
  147. }
  148. if (s == desni +1) {
  149. polje_pomocno[i] = polje[l]; l++;
  150. continue;
  151. }
  152. if (polje[l].naziv > polje[s].naziv) {
  153. polje_pomocno[i] = polje[l];
  154. l++;
  155. }
  156. else {
  157. polje_pomocno[i] = polje[s];
  158. s++;
  159. }}
  160. int j = 0;
  161. for (int i = lijevi; i <= desni; i++) {
  162. polje[i] = polje_pomocno[j]; j++;
  163. }}}
  164. int brisi_sve_vrsta(Lista *l) {
  165. string vrsta;
  166. cout << "Unesi vrstu zivotinja koje zelis obrisati: ";
  167. cin >> vrsta;
  168. int uspjeh = 0;
  169. element tekuci = FirstL(l);
  170. zivotinja obrisati;
  171. while (tekuci != EndL(l)) {
  172. obrisati = RetrieveL(tekuci, l);
  173. if (obrisati.vrsta == vrsta) {
  174. DeleteL(tekuci, l);
  175. uspjeh = 1;
  176. }
  177. else {
  178. tekuci = NextL(tekuci, l);
  179. }}
  180. return uspjeh;
  181. }
  182. void sortiranje(Lista *l) {
  183. int brojac;
  184. brojac = 0;
  185. element pomocna;
  186. pomocna = FirstL(l);
  187. while (pomocna != EndL(l)) {
  188. brojac++;
  189. pomocna = NextL(pomocna, l);
  190. }
  191. zivotinja *polje = new zivotinja[brojac];
  192. pomocna = FirstL(l);
  193. for (int i = 0; i < brojac; i++) {
  194. polje[i] = RetrieveL(pomocna, l);
  195. pomocna = NextL(pomocna, l);
  196. }
  197. DeleteAll(l);
  198. sort_po_nazivu(polje, 0, brojac-1);
  199.  
  200. for (int i = 0; i < brojac; i++) {
  201. InsertL(polje[i], EndL(l), l);
  202. }
  203. sort_po_cijena(polje, 0, brojac-1);
  204. DeleteAll(l);
  205. for (int i = 0; i < brojac; i++) {
  206. InsertL(polje[i], EndL(l), l);
  207. }
  208. cout << " Sortiranje po cijeni:" << endl << endl;
  209. sort_po_cijena(polje, 0, brojac-1);
  210. DeleteAll(l);
  211. for (int i = 0; i < brojac; i++) {
  212. InsertL(polje[i], EndL(l), l);
  213. }
  214. ispisi_zivotinje(l);
  215. cout << " Sortiranje po nazivu" << endl << endl;
  216. sort_po_nazivu(polje, 0, brojac-1);
  217. DeleteAll(l);
  218. for (int i = 0; i < brojac; i++) {
  219. InsertL(polje[i], EndL(l), l);
  220. }
  221. ispisi_zivotinje(l);
  222. return;
  223. }
  224.  
  225. int main() {
  226. Lista evidencija;
  227. InitL(&evidencija);
  228. int odg;
  229. int izbor;
  230. do {
  231. system("cls");
  232. cout << "\n\t/-/-/-/-/-/-/-/-/-Izbornik-/-/-/-/-/-/-/-/-/-/" << endl;
  233. cout << "\n\t\t1. Upis zivotinja";
  234. cout << "\n\t\t2. Ispis zivotinja";
  235. cout << "\n\t\t3. Pratrazivanje zivotinja";
  236. cout << "\n\t\t4. Brisanje zivotinja po nazivu";
  237. cout << "\n\t\t5. Brisanje zivotinja po vrsti";
  238. cout << "\n\t\t6. Sortiranje zivotinja";
  239. cout << "\n\t\t7. Kraj programa" <<endl;
  240. cout << "\n\t/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/";
  241. cout << endl <<"\n\t\tVas izbor: ";
  242. cin >> izbor;
  243. switch ( izbor) {
  244.  
  245. case 1:
  246. system ("cls");
  247. cout << " \n\t\t\t\tUPIS ZIVOTINJA " << endl;
  248.  
  249. do {
  250. cout << endl << endl;
  251. cout <<" Koliko zivotinja zelis unesti? ";
  252. cin >> odg ;
  253. if ( odg < 5 ) cout << endl << " Pogresan unos, pokusajte ponovno! " <<endl;
  254. }
  255. while ( odg < 5 );
  256.  
  257. for ( int i = 0 ; i < odg ; i ++ ) {
  258. cout << endl;
  259. dodaj_zivotinju(&evidencija);
  260. }
  261. cout << endl;
  262. break;
  263. case 2:
  264. system ("cls");
  265. cout << " \n\t\t\t\tISPIS ZIVOTINJA " << endl;
  266. cout << " \t\t\t\t ( unatrag ) " << endl << endl;
  267. ispisi_zivotinje(&evidencija);
  268. system ("pause");
  269. break;
  270. case 3:
  271. system ("cls");
  272. cout << " \n\t\t\t PRETRAZIVANJE ZIVOTINJA " << endl;
  273. cout << " \t\t\tdatum dostave >= 24.09.2012." << endl << endl;
  274. pretrazi(&evidencija);
  275. system ("pause");
  276. break;
  277. case 4:
  278. system ("cls");
  279. cout << " \n\t\t\t\tBRISANJE ZIVOTINJA " << endl;
  280. cout << " \t\t\t\t ( po nazivu ) " << endl << endl << endl;
  281. brisi_sve_naziv(&evidencija);
  282. system ("pause");
  283. break;
  284. case 5:
  285. system ("cls");
  286. cout << " \n\t\t\t\tBRISANJE ZIVOTINJA " << endl;
  287. cout << " \t\t\t\t ( po vrsti ) " << endl << endl << endl;
  288. brisi_sve_vrsta(&evidencija);
  289. system ("pause");
  290. break;
  291. case 6:
  292. system ("cls");
  293. cout << " \n\t\t\t\tSORTIRANJE ZIVOTINJA " << endl;
  294. sortiranje(&evidencija);
  295. system ("pause");
  296. break;
  297. case 7:
  298. system ("cls");
  299. break;
  300. default:
  301. cout <<" Pogresan unos. Pokusajte ponovno ! " << endl;
  302. }}
  303. while ( izbor !=7);
  304. return 0;
  305.  
  306. system ("pause");
  307. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: nsamonik on November 12, 2012

Ovaj koda posjedue neke različitosti u odnosu na moj kod. U main funkciji korištene su neke funkcije koje ja nisam realizirao na taj način, a u datotekama zaglavlja fukcije su također realzirane drugačije.

You need to login to post a comment.