Posted By

nsamonik on 11/12/12


Tagged

evidencija ducan kucniljubimci strukturpodataka


Versions (?)

Evidencija zivotinja u ducanu s kucnim ljubimcima


 / Published in: C++
 

Ovo je main funkcija koja sadrzi izbornik koji se sastoji od raznih mogunosti poput: Dodavanja, brisanja, sortiranja i pretrazivanja zivotinja koje se nalaze u listi.

  1. #include <iostream>
  2. //#include "pokazivaci.h"
  3. #include "polja.h"
  4. #include <string.h>
  5. #include <windows.h>
  6.  
  7. using namespace std;
  8.  
  9. void pretraga( sve_zivotinje*glava_liste )
  10. {
  11. int brojac=NumberL( glava_liste );
  12. jedna_zivotinja*tekuci;
  13. int brojac_dostavljenih=0;
  14. for( int i=1; i<=brojac; i++ )
  15. {
  16. tekuci=RetrieveL( i,glava_liste );
  17. if( tekuci->godina>2012 )
  18. {
  19. IspisL( tekuci );
  20. brojac_dostavljenih++;
  21. }
  22. else if( tekuci->godina==2012&&tekuci->mjesec>9 )
  23. {
  24. IspisL( tekuci );
  25. brojac_dostavljenih++;
  26. }
  27. else if( tekuci->godina==2012&&tekuci->mjesec==9&&tekuci->dan>23 )
  28. {
  29. IspisL( tekuci );
  30. brojac_dostavljenih++;
  31. }
  32. }
  33. cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012: "<<brojac_dostavljenih<<endl;
  34. }
  35.  
  36. jedna_zivotinja*pomocni=new jedna_zivotinja;
  37. sve_zivotinje*zadnji2=new sve_zivotinje;
  38. int pozicija_zadnje_dodanog=0;
  39.  
  40. bool brisi_sve( sve_zivotinje*glava_liste,int parametar)
  41. {
  42. bool obrisano=0;
  43. if(parametar==0)
  44. cout<<"Naziv vrste: ";
  45. else
  46. cout<<"Naziv zivotinje: ";
  47. char naziv[40];
  48. cin.ignore();
  49. cin.getline( naziv,40 );
  50. int brojac=NumberL( glava_liste );
  51. jedna_zivotinja*trenutni;
  52. while(brojac>0)
  53. {
  54. trenutni=RetrieveL( brojac,glava_liste );
  55. if(parametar==1){
  56. if( !strcmp( trenutni->naziv,naziv ) )
  57. {
  58. cout<<"Brisem!\n";
  59. DeleteL( brojac,glava_liste );
  60. brojac--;
  61. obrisano=1;
  62. }
  63. else
  64. brojac--;
  65. }
  66. else {
  67. if( !strcmp( trenutni->vrsta,naziv ) )
  68. {
  69. cout<<"Brisem!\n";
  70. DeleteL( brojac,glava_liste );
  71. brojac--;
  72. obrisano=1;
  73. }
  74. else
  75. brojac--;
  76. }
  77. }
  78. return obrisano;
  79. }
  80.  
  81. void spoji_polja( jedna_zivotinja *a[],int low,int sredina_polja,int high )
  82. {
  83. int brojac_lijevo_polje,brojac_pomocno_polje,brojac_desno_polje,k;
  84. jedna_zivotinja*pomocno_polje[1000];
  85. brojac_lijevo_polje=low;
  86. brojac_pomocno_polje=low;
  87. brojac_desno_polje=sredina_polja+1;
  88.  
  89. while( ( brojac_lijevo_polje<=sredina_polja )&&( brojac_desno_polje<=high ) )
  90. {
  91. if( a[brojac_lijevo_polje]->cijena>=a[brojac_desno_polje]->cijena )
  92. {
  93. pomocno_polje[brojac_pomocno_polje]=a[brojac_lijevo_polje];
  94. brojac_lijevo_polje++;
  95. }
  96. else
  97. {
  98. pomocno_polje[brojac_pomocno_polje]=a[brojac_desno_polje];
  99. brojac_desno_polje++;
  100. }
  101. brojac_pomocno_polje++;
  102. }
  103. if( brojac_lijevo_polje>sredina_polja )
  104. {
  105. for( k=brojac_desno_polje; k<=high; k++ )
  106. {
  107. pomocno_polje[brojac_pomocno_polje]=a[k];
  108. brojac_pomocno_polje++;
  109. }
  110. }
  111. else
  112. {
  113. for( k=brojac_lijevo_polje; k<=sredina_polja; k++ )
  114. {
  115. pomocno_polje[brojac_pomocno_polje]=a[k];
  116. brojac_pomocno_polje++;
  117. }
  118. }
  119. for( k=low; k<=high; k++ ) a[k]=pomocno_polje[k];
  120. }
  121. void mergesort( jedna_zivotinja *a[], int low,int high )
  122. {
  123. int sredina_polja;
  124. if( low<high )
  125. {
  126. sredina_polja=( low+high )/2;
  127. mergesort( a,low,sredina_polja );
  128. mergesort( a,sredina_polja+1,high );
  129. spoji_polja( a,low,sredina_polja,high );
  130. }
  131. }
  132.  
  133. void sortiraj( sve_zivotinje*glava_liste )
  134. {
  135. int brojac=NumberL( glava_liste );
  136. jedna_zivotinja*nova_zivotinja[brojac];
  137. for( int i=1; i<=brojac; i++ ) {
  138. nova_zivotinja[i-1]=RetrieveL( i,glava_liste );
  139. }
  140. mergesort( nova_zivotinja,0,brojac-1 );
  141. for( int i=0; i<brojac; i++ )
  142. {
  143. IspisL( nova_zivotinja[i] );
  144. }
  145. }
  146.  
  147. void ispis_zivotinja( sve_zivotinje*glava_liste )
  148. {
  149. jedna_zivotinja*tekuci;
  150. int brojac= NumberL( glava_liste );
  151. cout<<"Ukupan broj zivotinja: "<<brojac<<endl;
  152. if( pozicija_zadnje_dodanog==0 ){
  153. return;
  154. }
  155. for( int i=pozicija_zadnje_dodanog; i<=brojac; i++ )
  156. {
  157. tekuci=RetrieveL( i,glava_liste );
  158. IspisL( tekuci );
  159. }
  160. }
  161.  
  162. bool dodaj_novu( sve_zivotinje*glava_liste )
  163. {
  164. int brojac=NumberL( glava_liste );
  165. bool uspjesno=false;
  166. jedna_zivotinja*nova_zivotinja=new jedna_zivotinja;
  167. UnosL( nova_zivotinja );
  168. while( brojac>=0 )
  169. {
  170. if( brojac==0 )
  171. {
  172. InsertL( nova_zivotinja,0,glava_liste );
  173. uspjesno=true;
  174. pozicija_zadnje_dodanog=1;
  175. break;
  176. }//if
  177. pomocni=RetrieveL( brojac,glava_liste );
  178. if( nova_zivotinja->sifra>pomocni->sifra )
  179. {
  180. InsertL( nova_zivotinja,brojac,glava_liste );
  181. uspjesno=true;
  182. pozicija_zadnje_dodanog=brojac+1;
  183. break;
  184. }//if
  185. else
  186. brojac--;
  187. }//while
  188. if( !uspjesno )return 0;
  189. return 1;
  190. }//dodaj_novu
  191. int main()
  192. {
  193. uvod();
  194. sve_zivotinje*glava_liste;//samo inicijaliziramo pokazivac
  195. glava_liste=InitL( glava_liste );
  196. int izbor;
  197. do
  198. { cout<<"Izbornik: "<<endl;
  199. cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje"<<endl;
  200. cout<<"2. ispis_zivotinja sadrzaja liste pocevsi od sifre zivotinje koja je posljednja dodana"<<endl;
  201. cout<<"3. Pretraga liste te ispis svih zivotinja koje su dostavljene nakon\n 23.rujna 2012. godine te njihov broj"<<endl;
  202. cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje"<<endl;
  203. cout<<"5. Brisanje svih zivotinja odabrane vrste"<<endl;
  204. cout<<"6. Silazno sortiranje zivotinja prema cijeni i nazivu"<<endl;
  205. cout<<"7. Izlaz"<<endl;
  206. cin>>izbor;
  207. system( "cls" );
  208. switch( izbor )
  209. {
  210. case 1:
  211. if( dodaj_novu( glava_liste )==1 ) {
  212. cout<<"Zapis uspjesno dodan"<<endl;
  213. }
  214. else {
  215. cout<<"Zapis nije uspjesno dodan!"<<endl;
  216. }
  217. break;
  218. case 2:
  219. ispis_zivotinja( glava_liste );
  220. break;
  221. case 3:
  222. pretraga( glava_liste );
  223. break;
  224. case 4:
  225. if( brisi_sve( glava_liste,1 )==1 ) {
  226. cout<<"Uspjesno obrisano"<<endl;
  227. }
  228. else {
  229. cout<<"Nije uspjesno obrisano"<<endl;
  230. }
  231. break;
  232. case 5:
  233. if( brisi_sve( glava_liste,0 )==1 ) {
  234. cout<<"Uspjesno obrisano"<<endl;
  235. }
  236. else {
  237. cout<<"Nije uspjesno obrisano"<<endl;
  238. }
  239. break;
  240. case 6:
  241. sortiraj( glava_liste );
  242. } //switch
  243. system( "pause" );
  244. system( "cls" );
  245. }//do
  246. while( izbor!=7 );
  247. DeleteAll( glava_liste );
  248. return 0;
  249. }

Report this snippet  

You need to login to post a comment.