Posted By

josiptrupina1 on 11/12/12


Tagged

Implementacijalistepomocupolja ATPlista Implementacijalistepomocupokazivaca


Versions (?)

Glavni program(ATP lista)-evidencija zivotinja


 / Published in: C++
 

Ovo je glavni program u kojem ukljucujem određenu biblioteku ovisno o tome koju implementaciju zelim. Ako zelim implementaciju liste pomocu pokazivaca tada cu ovaj drugi header odnosno pozivanje tog headere staviti pod komentare i obrnuto.

  1. #include <iostream>
  2. #include "i_pokazivaci.h"
  3. //#include "i_polje.h"
  4. using namespace std;
  5. int brojac=0;
  6.  
  7. int dodavanje(tlista *glava){
  8. tzivotinja unos;
  9. brojac+=1;
  10. unos.sifra=brojac;
  11. cout << "Sifra: " << unos.sifra << endl;
  12. cout << "Vrsta: ";
  13. cin.ignore();
  14. cin.getline(unos.vrsta,30);
  15. cout << "Naziv: ";
  16. cin.getline(unos.naziv,30);
  17. cout << "Cijena: ";
  18. cin >> unos.cijena;
  19. cout << "Datum(format: GGGGMMDD): ";
  20. cin >> unos.datum;
  21. cout << endl;
  22. if(unos.datum<19900101 || unos.datum>20501231){
  23. brojac--;
  24. return 0;}
  25. InsertL(unos,EndL(glava),glava);
  26. return 1;
  27.  
  28. }
  29.  
  30. void ispis(tlista *glava){
  31. if(glava->sljedeci==0) {cout<<"Lista je prazna!"<<endl << endl ;return ;}
  32.  
  33. tzivotinja zivotinje[1000];
  34. el i=FirstL(glava);
  35. int brojac=0;
  36.  
  37. while(i!=EndL(glava)){
  38. zivotinje[brojac]=RetreiveL(i,glava);
  39. i=NextL(i,glava);
  40. brojac++;
  41. }
  42.  
  43. for(int i=brojac-1;i>=0;i--){
  44. cout<<endl;
  45. cout<<"Sifra: "<<zivotinje[i].sifra<<endl;
  46. cout<<"Vrsta: "<<zivotinje[i].vrsta<<endl;
  47. cout<<"Naziv: "<<zivotinje[i].naziv<<endl;
  48. cout<<"Cijena: "<<zivotinje[i].cijena<<endl;
  49. cout<<"Datum: "<<zivotinje[i].datum<<endl << endl;
  50. }
  51. };
  52.  
  53. void pretrazivanje(tlista *glava){
  54. el i=FirstL(glava);
  55. int brojac=0;
  56. tzivotinja zivotinja;
  57. cout<<"Zivotinje dostavljene nakon 23. rujna, 2012. "<<endl;
  58. while(i!=EndL(glava)){
  59. zivotinja=RetreiveL(i,glava);
  60. if(zivotinja.datum>20120923){
  61. cout<<endl;
  62. cout<<"sifra: "<<zivotinja.sifra<<endl;
  63. cout<<"vrsta: "<<zivotinja.vrsta<<endl;
  64. cout<<"naziv: "<<zivotinja.naziv<<endl;
  65. cout<<"cijena: "<<zivotinja.cijena<<endl;
  66. cout<<"datum: "<<zivotinja.datum<<endl;
  67. brojac++;}
  68. i=NextL(i,glava);}
  69. cout<<endl;
  70. cout<<"Broj zivotinja dostavljenih nakon 23. rujna, 2012: "<<brojac<<endl<<endl;
  71. };
  72.  
  73. int brisanje_zivotinje(tlista *glava){
  74. char unos[30];
  75. cout << "Unesite naziv zivotinje koju hocete obrisati: ";
  76. cin.ignore();
  77. cin.getline(unos,30);
  78. el i=FirstL(glava),brisi;
  79. tzivotinja zivotinja;
  80.  
  81. while(i!=EndL(glava)){
  82. brisi=LocateL(unos,glava);
  83. if(brisi==EndL(glava)) {return 0;}
  84. zivotinja=RetreiveL(brisi,glava);
  85. if(strcmp(zivotinja.naziv,unos)==0){
  86. cout<<endl;
  87. cout<<"Obrisana je sljedeca zivotinja: "<<endl;
  88. cout<<"sifra: "<<zivotinja.sifra<<endl;
  89. cout<<"vrsta: "<<zivotinja.vrsta<<endl;
  90. cout<<"naziv: "<<zivotinja.naziv<<endl;
  91. cout<<"cijena: "<<zivotinja.cijena<<endl;
  92. cout<<"datum: "<<zivotinja.datum<<endl;
  93. DeleteL(brisi,glava);
  94. return 1;}
  95. i=NextL(i,glava);}
  96. return 0;
  97. };
  98.  
  99. int brisanje_vrste(tlista *glava){
  100. char unos[30];
  101. cout << "Unesite vrstu zivotinje koju hocete obrisati: ";
  102. cin.ignore();
  103. cin.getline(unos,30);
  104. el i=FirstL(glava),brisi;
  105. tzivotinja zivotinja;
  106. int uspjeh;
  107.  
  108. while(i!=EndL(glava)){
  109. brisi=LocateL(unos,glava);
  110. if(brisi==EndL(glava)) {goto kraj;}
  111. zivotinja=RetreiveL(brisi,glava);
  112. if(strcmp(zivotinja.vrsta,unos)==0){
  113. cout<<endl;
  114. cout<<"Obrisana je sljedeca zivotinja: "<<endl;
  115. cout<<"sifra: "<<zivotinja.sifra<<endl;
  116. cout<<"vrsta: "<<zivotinja.vrsta<<endl;
  117. cout<<"naziv: "<<zivotinja.naziv<<endl;
  118. cout<<"cijena: "<<zivotinja.cijena<<endl;
  119. cout<<"datum: "<<zivotinja.datum<<endl;
  120. DeleteL(brisi,glava);
  121. uspjeh=1;
  122. }
  123. i=NextL(i,glava);}
  124. kraj: if(uspjeh==1)return 1;
  125. else return 0;
  126. };
  127.  
  128. void spoji(tzivotinja *polje,int donji,int sredina,int gornji)
  129. {
  130. int h,i,j,k;
  131. h=donji;
  132. i=donji;
  133. j=sredina+1;
  134.  
  135. tzivotinja *temp = new tzivotinja[gornji-donji+1];
  136.  
  137. while((h<=sredina)&&(j<=gornji))
  138. {
  139. if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0)))
  140. {
  141. temp[i]=polje[h];
  142. h++;
  143. }
  144. else
  145. {
  146. temp[i]=polje[j];
  147. j++;
  148. }
  149. i++;
  150. }
  151. if(h>sredina)
  152. {
  153. for(k=j; k<=gornji; k++)
  154. {
  155. temp[i]=polje[k];
  156. i++;
  157. }
  158. }
  159. else
  160. {
  161. for(k=h; k<=sredina; k++)
  162. {
  163. temp[i]=polje[k];
  164. i++;
  165. }
  166. }
  167. for(k=donji; k<=gornji; k++) polje[k]=temp[k];
  168. delete [] temp;
  169. }
  170.  
  171. void mergesort(tzivotinja *polje, int donji,int gornji )
  172. {
  173. int sredina;
  174. if(donji<gornji)
  175. {
  176. sredina=(donji+gornji)/2;
  177. mergesort(polje,donji,sredina);
  178. mergesort(polje,sredina+1,gornji);
  179. spoji(polje,donji,sredina,gornji);
  180. }
  181. }
  182.  
  183. void sortiranje(tlista *glava){
  184. int broj=0;
  185. el tekuci = FirstL(glava);
  186. while(tekuci != EndL(glava)){
  187. broj++;
  188. tekuci = NextL(tekuci,glava);
  189. }
  190.  
  191. tzivotinja* polje = new tzivotinja[broj];
  192.  
  193. tekuci = FirstL(glava);
  194. int i = 0;
  195. while(tekuci != EndL(glava)){
  196. polje[i] = RetreiveL(tekuci,glava);
  197. tekuci = NextL(tekuci,glava);
  198. i++;
  199. }
  200.  
  201. mergesort(polje,0,broj-1);
  202.  
  203. DeleteAllL(glava);
  204.  
  205. glava=new tlista;
  206.  
  207. InitL(glava);
  208.  
  209. cout << "Sortirani ispis:" << endl;
  210. for( i = 0; i < broj; i++){
  211. InsertL(polje[i],EndL(glava),glava);
  212. tzivotinja zivotinja = polje[i];
  213. cout << "Sifra: " << zivotinja.sifra << endl;
  214. cout << "Naziv: " << zivotinja.naziv << endl;
  215. cout << "Vrsta: " << zivotinja.vrsta << endl;
  216. cout << "Cijena: " << zivotinja.cijena << endl;
  217. cout << "Datum dostave: " << zivotinja.datum << endl;
  218. cout << endl;
  219. }
  220. }
  221.  
  222.  
  223. int main(){
  224. tlista *glava;
  225. glava=new tlista;
  226. InitL(glava);
  227. int izbor;
  228. do{
  229. cout << " ||Evidencija zivotinja|| " << endl;
  230. cout << "1.Dodavanje zapisa prema rastucoj sifri" << endl;
  231. cout << "2.Ispis od posljedne dodane sifre!" << endl;
  232. cout << "3.Ispis zivotinja dostavljenih nakon 23.09.2012. " << endl;
  233. cout << "4.Brisanje pojedinacnog unosa prema nazivu zivotinje " << endl;
  234. cout << "5.Brisanje svih zivotinja odabrane vrste " << endl;
  235. cout << "6.Sortiranje prema cijeni i nazivu " << endl;
  236. cout << "9.Izlaz iz programa!" << endl;
  237. cout << "-------------------------------" << endl;
  238. cout << "Vas odabir: ";
  239. cin >> izbor;
  240. switch(izbor){
  241. case 1: if(dodavanje(glava)) cout << "Uspjesan zapis!" << endl;
  242. else cout << "Neuspjesan zapis!" << endl;
  243. break;
  244. case 2: ispis(glava);
  245. break;
  246. case 3: pretrazivanje(glava);
  247. break;
  248. case 4: if(brisanje_zivotinje(glava)) cout << "Uspjesno obrisano!" << endl;
  249. else cout << "Neuspjesno!" << endl;
  250. break;
  251. case 5: if(brisanje_vrste(glava)) cout << "Uspjesno obrisani!" << endl;
  252. else cout << "Neuspjesno!" << endl;
  253. break;
  254. case 6: sortiranje(glava);
  255. break;
  256. }
  257. }while(izbor!=9);
  258.  
  259. system("Pause");
  260. return 0;
  261. }

Report this snippet  

You need to login to post a comment.