Posted By

Quake6 on 11/11/12


Tagged

Strukture podataka z1


Versions (?)

Evidencija životinja - Zadatak_1, strukture podataka


 / Published in: C++
 

Evidencija životinja

  1. #include <iostream>
  2. #include "liste_poka.h"
  3. //#include "lista_polja.h"
  4. #include <string.h>
  5. #include <windows.h>
  6. using namespace std;
  7.  
  8.  
  9. void spoji_polja( z *polje[],int low,int mid,int high )
  10. {
  11. int l,p,d,k;
  12. z*pom[1000];
  13. l=low;
  14. p=low;
  15. d=mid+1;
  16. while( ( l<=mid )&&( d<=high ) ) {
  17. if( polje[l]->cijena>=polje[d]->cijena ) {
  18. pom[p]=polje[l];
  19. l++;
  20. } else {
  21. pom[p]=polje[d];
  22. d++;
  23. }
  24. p++;
  25. }
  26. if( l>mid ) {
  27. for( k=d; k<=high; k++ ) {
  28. pom[p]=polje[k];
  29. p++;
  30. }
  31. } else {
  32. for( k=l; k<=mid; k++ ) {
  33. pom[p]=polje[k];
  34. p++;
  35. }
  36. }
  37. for( k=low; k<=high; k++ ){
  38. polje[k]=pom[k];
  39. }
  40. }
  41.  
  42. bool brisi_sve( t*list_head,int cetvrti_ili_peti)
  43. {
  44. bool obrisano=0;
  45. if(cetvrti_ili_peti==0){
  46. cout<<"Naziv vrste-> ";
  47. }
  48. else{
  49. cout<<"Naziv zivotinje-> ";
  50. }
  51. char naziv[40];
  52. cin.ignore();
  53. cin.getline( naziv,40 );
  54. int br=NumberL( list_head );
  55. z*trenutni;
  56. while(br>0) {
  57. trenutni=RetrieveL( br,list_head );
  58. if(cetvrti_ili_peti==1) {
  59. if( !strcmp( trenutni->naziv,naziv ) ) {
  60. DeleteL( br,list_head );
  61. br--;
  62. obrisano=1;
  63. } else{
  64. br--;
  65. }
  66. } else {
  67. if( !strcmp( trenutni->vrsta,naziv ) ) {
  68. DeleteL( br,list_head );
  69. br--;
  70. obrisano=1;
  71. } else{
  72. br--;
  73. }
  74. }
  75. }
  76. return obrisano;
  77. }
  78.  
  79. void pretraga( t*list_head )
  80. {
  81. int br=NumberL( list_head );
  82. z*kretanje_kroz_listu;
  83. int b=0;
  84. for( int i=1; i<=br; i++ ) {
  85. kretanje_kroz_listu=RetrieveL( i,list_head );
  86. if( kretanje_kroz_listu->godina>2012 ) {
  87. cout<<"-----------------------"<<endl;
  88. cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
  89. cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
  90. cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
  91. cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
  92. cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;;
  93. b++;
  94. } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec>9 ) {
  95. cout<<"-----------------------"<<endl;
  96. cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
  97. cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
  98. cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
  99. cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
  100. cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
  101. b++;
  102. } else if( kretanje_kroz_listu->godina==2012&&kretanje_kroz_listu->mjesec==9&&kretanje_kroz_listu->dan>23 ) {
  103. cout<<"-----------------------"<<endl;
  104. cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
  105. cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
  106. cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
  107. cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
  108. cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
  109. b++;
  110. }
  111. }
  112. cout<<"Broj zivotinja dostavljenih nakon 23. rujna 2012-> "<<b<<endl;
  113. }
  114.  
  115. z*pomocni=new z;
  116. t*zadnji2=new t;
  117. int z_dodan=0;
  118.  
  119. void mergesort( z *polje[], int low,int high )
  120. {
  121. int mid;
  122. if( low<high ) {
  123. mid=( low+high )/2;
  124. mergesort( polje,low,mid ); // 4
  125. mergesort( polje,mid+1,high );
  126. spoji_polja( polje,low,mid,high );
  127. }
  128. }
  129.  
  130. void ispis_zivotinja( t*list_head )
  131. {
  132. z*kretanje_kroz_listu;
  133. int br= NumberL( list_head );
  134. cout<<"Ukupan broj zivotinja-> "<<br<<endl;
  135. if( z_dodan==0 ){
  136. return;
  137. }
  138. for( int i=z_dodan; i<=br; i++ ) {
  139. kretanje_kroz_listu=RetrieveL( i,list_head );
  140. cout<<"-----------------------"<<endl;
  141. cout<<"Sifra-> "<<kretanje_kroz_listu->sifra<<endl;
  142. cout<<"Vrsta-> "<<kretanje_kroz_listu->vrsta<<endl;
  143. cout<<"Naziv-> "<<kretanje_kroz_listu->naziv<<endl;
  144. cout<<"Datum-> "<<kretanje_kroz_listu->dan<<"."<<kretanje_kroz_listu->mjesec<<"."<<kretanje_kroz_listu->godina<<endl;
  145. cout<<"Cijena-> "<<kretanje_kroz_listu->cijena<<endl;
  146. }
  147. }
  148.  
  149. void sortiraj( t*list_head )
  150. {
  151. int br=NumberL( list_head );
  152. z*polje[br];
  153. for( int i=1; i<=br; i++ ){
  154. polje[i-1]=RetrieveL( i,list_head );
  155. }
  156. mergesort( polje,0,br-1 );
  157. for( int i=0; i<br; i++ ) {
  158.  
  159. cout<<"-----------------------"<<endl;
  160. cout<<"Sifra-> "<<polje[i]->sifra<<endl;
  161. cout<<"Vrsta-> "<<polje[i]->vrsta<<endl;
  162. cout<<"Naziv-> "<<polje[i]->naziv<<endl;
  163. cout<<"Datum-> "<<polje[i]->dan<<"."<<polje[i]->mjesec<<"."<<polje[i]->godina<<endl;
  164. cout<<"Cijena-> "<<polje[i]->cijena<<endl;
  165. }
  166. }
  167.  
  168. bool dodaj_novu( t*list_head )
  169. {
  170. int br=NumberL( list_head );
  171. bool dodan=false;
  172. z*nova_zivotinja=new z;
  173. cout<<"Sifra-> ";
  174. cin>>nova_zivotinja->sifra;
  175. cout<<"Vrsta->";
  176. cin>>nova_zivotinja->vrsta;
  177. cout<<"Naziv-> ";
  178. cin>>nova_zivotinja->naziv;
  179. cout<<"Cijena-> ";
  180. cin>>nova_zivotinja->cijena;
  181. cout<<"Dan dostave-> ";
  182. cin>>nova_zivotinja->dan;
  183. cout<<"Mjesec dostave-> ";
  184. cin>>nova_zivotinja->mjesec;
  185. cout<<"Godina dostave-> ";
  186. cin>>nova_zivotinja->godina;
  187. while( br>=0 ) {
  188. if( br==0 ) {
  189. InsertL( nova_zivotinja,0,list_head );
  190. dodan=true;
  191. z_dodan=1;
  192. break;
  193. }//if
  194. pomocni=RetrieveL( br,list_head );
  195. if( nova_zivotinja->sifra>pomocni->sifra ) {
  196. InsertL( nova_zivotinja,br,list_head );
  197. dodan=true;
  198. z_dodan=br+1;
  199. break;
  200. }//if
  201. else{
  202. br--;
  203. }
  204. }//while
  205. if( !dodan ){
  206. return 0;
  207. }
  208. return 1;
  209. }
  210.  
  211. int main()
  212. {
  213. t*list_head;
  214. list_head=InitL( list_head );
  215. int izbor;
  216. do {
  217. cout<<"================================"<<endl;
  218. cout<<"Izbornik-> "<<endl;
  219. cout<<"1. Nova zivotinja"<<endl;
  220. cout<<"2. Ispis zivotinja"<<endl;
  221. cout<<"3. Pretraga"<<endl;
  222. cout<<"4. Brisanje prema nazivu"<<endl;
  223. cout<<"5. Brisanje prema vrsti"<<endl;
  224. cout<<"6. Sortiranje"<<endl;
  225. cout<<"10. Izlaz"<<endl;
  226. cin>>izbor;
  227. if(izbor==1) {
  228. int povratak=dodaj_novu(list_head);
  229. if(povratak){
  230. cout<<"Dodan"<<endl;
  231. }
  232. else{
  233. cout<<"Nije dodan"<<endl;
  234. }
  235. } if(izbor==2)
  236. ispis_zivotinja( list_head );
  237. if(izbor==3)
  238. pretraga( list_head );
  239. if(izbor==4) {
  240. int povratak= brisi_sve( list_head,1 );
  241. if(povratak){
  242. cout<<"Obrisan"<<endl;
  243. }
  244. else{
  245. cout<<"Nije obrisan"<<endl;
  246. }
  247. } if(izbor==5) {
  248. int povratak= brisi_sve( list_head,0 );
  249. if(povratak) {
  250. cout<<"Obrisan"<<endl;
  251. }
  252. else {
  253. cout<<"Nije obrisan"<<endl;
  254. }
  255. } if(izbor==6)
  256. sortiraj( list_head );
  257. }//do
  258. while( izbor!=10 );
  259. DeleteAll( list_head );
  260. return 0;
  261. }

Report this snippet  

You need to login to post a comment.