Posted By

MFilip on 11/12/12


Tagged

main funkcija zadatak1


Versions (?)

zadatak1.cpp


 / Published in: C++
 

prvi zadatak main funkcija

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

Report this snippet  

You need to login to post a comment.