Posted By

tdoric on 11/12/12


Tagged

Liste sortiranje unos ispis listafunkcije


Versions (?)

glavni_program_lista_zivotinje


 / Published in: C++
 

moj zadatak iz struktura podataka

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_polje.h"
  4. //#include "lista_pokazivac.h"
  5. using namespace std;
  6.  
  7. int br_elem = 0;
  8. int kod = 1000;
  9. int upis()
  10. {
  11. ljubimac tekuci, prethodni = RetreiveL(PreviousL(EndL(list), list), list);
  12. tekuci.kod = kod;
  13. cout << "Dan: ";
  14. cin >> tekuci.d;
  15. cout << "Mjesec: ";
  16. cin >> tekuci.m;
  17. cout << "Godina: ";
  18. cin >> tekuci.g;
  19. cout << "Sifra: " << tekuci.kod << endl;
  20. cout << "Vrsta: ";
  21. cin.ignore();
  22. cin.getline(tekuci.vrsta,50);
  23. cout << "Naziv: ";
  24. cin.getline(tekuci.naziv,50);
  25. cout << "cijena: ";
  26. cin >> tekuci.cijena;
  27. InsertL(tekuci, EndL(list), list);
  28. br_elem++;
  29. kod++;
  30. return 1;
  31. }
  32.  
  33. void pretrazivanje_liste()
  34. {
  35. int uk = 0;
  36. element tekuci = FirstL(list);
  37. ljubimac trazeni;
  38. while(tekuci != EndL(list))
  39. {
  40. trazeni = RetreiveL(tekuci, list);
  41. if((trazeni.g==2012 && trazeni.m==9 && trazeni.d>23) || trazeni.g>2012 || trazeni.g==2012&&trazeni.m>9)
  42. {
  43. cout << "Sifra: " << trazeni.kod << endl;
  44. cout << "Vrsta: " << trazeni.vrsta << endl;
  45. cout << "Naziv: " << trazeni.naziv << endl;
  46. cout << "Cijena: " << trazeni.cijena << endl;
  47. cout << "Datum dostave: " << trazeni.d << "."
  48. << trazeni.m << "."
  49. << trazeni.g << "." << endl;
  50. cout << "---------------------------" << endl;
  51. uk++;
  52. }
  53. tekuci = NextL(tekuci, list);
  54. }
  55. cout << "Ukupan broj zivotinja dostavljenih nakon 23.9.2012. je: " << uk;
  56. }
  57. void ispis_liste()
  58. {
  59. element zadnji = PreviousL(EndL(list), list);
  60. ljubimac tekuci;
  61. if(EndL(list) == FirstL(list))
  62. {
  63. cout << "Lista je prazna";
  64. return;
  65. }
  66. while(zadnji >= FirstL(list))
  67. {
  68. tekuci = RetreiveL(zadnji, list);
  69. cout << "Sifra: " << tekuci.kod << endl;
  70. cout << "Vrsta: " << tekuci.vrsta << endl;
  71. cout << "Naziv: " << tekuci.naziv << endl;
  72. cout << "Cijena: " << tekuci.cijena << endl;
  73. cout << "Datum dostave: " << tekuci.d << "."
  74. << tekuci.m << "."
  75. << tekuci.g << "." << endl;
  76. cout << "---------------------------" << endl;
  77. zadnji = PreviousL(zadnji, list);
  78. }
  79. }
  80.  
  81. int brisanje_po_vrsti()
  82. {
  83. char ime[50];
  84. bool del = false;
  85. element trazena;
  86. cout << "Vrsta zivotinje koju zelite obrisati: ";
  87. cin.ignore();
  88. cin.getline(ime,50);
  89. while(1)
  90. {
  91. trazena = LocateL(ime, list);
  92. if(trazena == EndL(list))
  93. break;
  94. DeleteL(trazena, list);
  95. del = true;
  96. br_elem--;
  97. }
  98. if(!del)
  99. return 0;
  100. else
  101. return 1;
  102. }
  103. int brisanje_po_nazivu_u_listi()
  104. {
  105. char ime[50];
  106. bool del = false;
  107. element trazena;
  108. cout << "Naziv zivotinje koju zelite obrisati: ";
  109. cin.ignore();
  110. cin.getline(ime,50);
  111. while(1)
  112. {
  113. trazena = LocateL(ime, list);
  114. if(trazena == EndL(list))
  115. break;
  116. DeleteL(trazena, list);
  117. del = true;
  118. br_elem--;
  119. }
  120. if(!del)
  121. return 0;
  122. else
  123. return 1;
  124. }
  125. void sortiranje(ljubimac *a, ljubimac *b, int l, int r)
  126. {
  127. int i, j, k, m;
  128. if(l < r)
  129. {
  130. m = (r+l) / 2;
  131. sortiranje(a, b, l, m);
  132. sortiranje(a, b, m+1, r);
  133. i = l; j = m+1; k = l;
  134. while((i <= m) && (j <= r))
  135. {
  136. if(a[i].cijena>a[j].cijena || ((a[i].cijena==a[j].cijena)&&(strncmp(a[i].naziv, a[j].naziv, sizeof(a[i].naziv))>0)))
  137. memcpy(&b[k++], &a[i++], sizeof(ljubimac));
  138. else
  139. memcpy(&b[k++], &a[j++], sizeof(ljubimac));
  140. }
  141. while(i <= m)
  142. memcpy(&b[k++], &a[i++], sizeof(ljubimac));
  143. while(j <= r)
  144. memcpy(&b[k++], &a[j++], sizeof(ljubimac));
  145. for(k = l; k <= r; k++)
  146. memcpy(&a[k], &b[k], sizeof(ljubimac));
  147. }
  148. }
  149. void sortiranje2()
  150. {
  151. ljubimac *a = new ljubimac[br_elem];
  152. element tekuci = FirstL(list);
  153. int i = 0;
  154. while(tekuci != EndL(list))
  155. {
  156. a[i] = RetreiveL(tekuci, list);
  157. tekuci = NextL(tekuci, list);
  158. i++;
  159. }
  160. ljubimac *b = new ljubimac[br_elem];
  161. sortiranje(a, b, 0, br_elem-1);
  162. DeleteAllL(list);
  163. InitL(list);
  164. for(i=0; i<br_elem; i++)
  165. InsertL(a[i], EndL(list), list);
  166. delete []a;
  167. delete []b;
  168. }
  169.  
  170. int main()
  171. {
  172. InitL(list);
  173.  
  174. int izbor, rez;
  175. do
  176. {
  177. cout << "1. Upis u listu" << endl;
  178. cout << "2. Ispis liste" << endl;
  179. cout << "3. Zivotinje dostavljene nakon 23.9.2012." << endl;
  180. cout << "4. Brisanje prema nazivu" << endl;
  181. cout << "5. Brisanje prema vrsti" << endl;
  182. cout << "6. Sortirano silazno, prema cijeni i nazivu" << endl;
  183. cout << "0. Izlaz iz programa" << endl << endl;
  184. cin >> izbor;
  185. switch(izbor)
  186. {
  187. case 1:
  188. cout << endl << "1. Dodavanje zapisa prema rastucoj sifri" << endl;
  189. rez = upis();
  190. if(rez == 1)
  191. {
  192. cout << "Uspjesno!!!";
  193. }
  194. else
  195. cout << "Neuspjesno!!!";
  196. cout << endl << endl;
  197. break;
  198. case 2:
  199. cout << endl << "2. Ispis liste" << endl;
  200. ispis_liste();
  201. cout << endl << endl;
  202. break;
  203. case 3:
  204. cout << endl << "3. Zivotinje dostavljene nakon 23.9.2012." << endl;
  205. pretrazivanje_liste();
  206. cout << endl << endl;
  207. break;
  208. case 4:
  209. cout << endl << "4. Brisanje iz liste prema nazivu" << endl;
  210. rez = brisanje_po_nazivu_u_listi();
  211. if(rez == 1)
  212. cout << "Uspjesno!!!";
  213. else
  214. cout << "Neuspjesno!";
  215. cout << endl << endl;
  216. break;
  217. case 5:
  218. cout << endl << "5. Brisanje prema vrsti" << endl;
  219. rez = brisanje_po_vrsti();
  220. if(rez == 1)
  221. cout << "Uspjesno!!!";
  222. else
  223. cout << "Neuspjesno!";
  224. cout << endl << endl;
  225. break;
  226. case 6:
  227. cout << endl << "6. Sortirano silazno prema nazivu i cijeni" << endl;
  228. sortiranje2();
  229. cout << endl << endl;
  230. break;
  231. default:
  232. cout << endl << "Pogreska\n Unesite ponovo!" << endl << endl;
  233. }
  234. } while(izbor != 0);
  235. return 0;
  236. }

Report this snippet  

You need to login to post a comment.