Posted By

KrsnikNatalija on 11/11/12


Tagged

glavni programstrukture podatakazadatak1


Versions (?)

Glavni program,zadatak1


 / Published in: C++
 

URL: http://e.foi.hr/wiki/strukture_podataka/index.php?title=Zadatak_1_Krsnik_Natalija&action=submit

Glavni program,zadatak1

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

Report this snippet  

You need to login to post a comment.