Posted By

Jurij on 11/12/12


Tagged

list adt


Versions (?)

Evidencija zivotinja main


 / Published in: C++
 

main dio programa za prvi zadatak

  1. #include <iostream>
  2. #include <cstring>
  3. #include "lista_polje.h"
  4. //#include "lista_pokazivac.h"
  5. using namespace std;
  6.  
  7. int unos() {
  8. zapis novi;
  9. novi.sifra=sifra++;
  10. cout<<"Vrsta: ";
  11. cin.ignore();
  12. cin.getline(novi.vrsta,20);
  13. cout<<"Naziv: ";
  14. cin.getline(novi.naziv,20);
  15. cout<<"Cijena: ";cin>>novi.cijena;
  16. if(novi.cijena<=0) {sifra--;return 0;}
  17. cout<<"Datum dostave zivotinje"<<endl;
  18. cout<<"Dan: ";cin>>novi.datum.d;
  19. if(novi.datum.d<=0||novi.datum.d>31) {sifra--;return 0;}
  20. cout<<"Mjesec: ";
  21. cin>>novi.datum.m;
  22. if(novi.datum.m<=0||novi.datum.m>12) {sifra--;return 0;}
  23. cout<<"Godina: ";cin>>novi.datum.g;
  24. if(novi.datum.g<1990||novi.datum.g>2012) {sifra--;return 0;}
  25. InsertL(novi,n,L);
  26. n++;
  27. return 1;
  28. }
  29.  
  30. void ispis_silaz() {
  31. zapis h;
  32. int k=0;
  33. int p = PreviousL(EndL(L),L);
  34. while(k<n){
  35. h=RetrieveL(p,L);
  36. cout<<"Sifra: "<<h.sifra<<endl;
  37. cout<<"Vrsta: "<<h.vrsta<<endl;
  38. cout<<"Naziv: "<<h.naziv<<endl;
  39. cout<<"Cijena: "<<h.cijena<<endl;
  40. cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
  41. cout<<"-------------------------------"<<endl;
  42. p = PreviousL(p,L);
  43. k++;
  44. }
  45. }
  46.  
  47. void ispis_datum() {
  48. int k=0;
  49. zapis h;
  50. int p = FirstL(L);
  51. while(p!=EndL(L)) {
  52. h = RetrieveL(p,L);
  53. if(h.datum.g=2012 && h.datum.m>=9 && h.datum.d>=23)
  54. {
  55. k++;
  56. cout<<"Sifra: "<<h.sifra<<endl;
  57. cout<<"Vrsta: "<<h.vrsta<<endl;
  58. cout<<"Naziv: "<<h.naziv<<endl;
  59. cout<<"Cijena: "<<h.cijena<<endl;
  60. cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
  61. cout<<"------------------------------"<<endl;
  62. }
  63. if(h.datum.g=2012 && h.datum.m>9)
  64. {
  65. k++;
  66. cout<<"Sifra: "<<h.sifra<<endl;
  67. cout<<"Vrsta: "<<h.vrsta<<endl;
  68. cout<<"Naziv: "<<h.naziv<<endl;
  69. cout<<"Cijena: "<<h.cijena<<endl;
  70. cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
  71. cout<<"------------------------------"<<endl;
  72. }
  73. p = NextL(p,L);
  74. }
  75. cout<<"Broj pronadjenih zivotinja: "<<k<<endl<<endl;
  76. }
  77.  
  78. int brisi_naziv() {
  79. char naziv[20];
  80. cout<<"Unesite naziv zivotinje: ";
  81. cin.ignore();
  82. cin.getline(naziv,20);
  83. int p = LocateL(naziv, L);
  84. if(p==EndL(L))return 0;
  85. else {
  86. DeleteL(p,L);
  87. n--;
  88. return 1;
  89. }
  90. }
  91.  
  92. int brisi_vrsta() {
  93. char vrsta[20];
  94. int p;
  95. bool gotovo=0;
  96. cout<<"Unesite vrstu zivotinje: ";
  97. cin.ignore();
  98. cin.getline(vrsta,20);
  99. while (LocateL(vrsta,L)!=EndL(L)) {
  100. p = LocateL(vrsta,L);
  101. DeleteL(p,L);
  102. n--;
  103. gotovo=1;
  104. }
  105. if(!gotovo) return 0;
  106. else return 1;
  107. }
  108.  
  109. void ispis() {
  110. zapis h;
  111. int p=FirstL(L);
  112. while (p!=EndL(L)){
  113. h=RetrieveL(p,L);
  114. cout<<"Sifra: "<<h.sifra<<endl;
  115. cout<<"Vrsta: "<<h.vrsta<<endl;
  116. cout<<"Naziv: "<<h.naziv<<endl;
  117. cout<<"Cijena: "<<h.cijena<<endl;
  118. cout<<"Datum: "<<h.datum.d<<"."<<h.datum.m<<"."<<h.datum.g<<"."<<endl;
  119. cout<<"-------------------------------"<<endl;
  120. p = NextL(p,L);
  121. }
  122. }
  123.  
  124. void spoji(int i, int k, int j) {
  125. int I=i, J=k+1, K=0;
  126. zapis *b = new zapis[j-i+1];
  127. zapis prvi,drugi;
  128.  
  129. while(I<=k && J<=j){
  130.  
  131. prvi=RetrieveL(I,L);
  132. drugi=RetrieveL(J,L);
  133.  
  134. if(prvi.cijena > drugi.cijena) {
  135. b[K++]=prvi;
  136. I++;
  137. }
  138.  
  139. else if(prvi.cijena < drugi.cijena){
  140. b[K++]=drugi;
  141. J++;
  142. }
  143. else if(strcmp(prvi.naziv,drugi.naziv)==-1) {
  144. b[K++]=drugi;
  145. J++;
  146. }
  147. else {
  148. b[K++]=prvi;
  149. I++;
  150. }
  151. }
  152.  
  153. if(I>k) while(J<=j) {
  154. drugi=RetrieveL(J,L);
  155. b[K++] = drugi;
  156. J++;
  157. }
  158.  
  159. else while(I<=k) {
  160. prvi=RetrieveL(I,L);
  161. b[K++] = prvi;
  162. I++;
  163. }
  164.  
  165. for(int I=0;I<=j-i;I++) L.podaci[i+I]=b[I];
  166.  
  167. delete [] b;
  168. }
  169.  
  170. void msort(int i, int j) {
  171. if(i<j) {
  172. int k=(i+j)/2;
  173. msort(i,k);
  174. msort(k+1,j);
  175. spoji(i,k,j);
  176. }
  177. }
  178.  
  179. void msort() {
  180. msort(0,n-1);
  181. }
  182.  
  183. int main() {
  184. int izbor;
  185. InitL(L);
  186. do {
  187. cout<<"1. Unos nove zivotinje"<<endl;
  188. cout<<"2. Ispis zivotinja od zadnjeg unosa prema prvom"<<endl;
  189. cout<<"3. Ispis zivotinja dodanih nakon 23. 09. 2012."<<endl;
  190. cout<<"4. Brisanje zivotinje unosom naziva"<<endl;
  191. cout<<"5. Brisanje cijele vrste zivotinja"<<endl;
  192. cout<<"6. Silazno merge sortiranje, po cijeni"<<endl;
  193. cout<<"0. Izlaz"<<endl;
  194. cin>>izbor;
  195. switch(izbor) {
  196. case 1:
  197. if(unos())cout<<"Zapisano je."<<endl;
  198. else cout<<"Krivi unos"<<endl;
  199. break;
  200. case 2:
  201. ispis_silaz();
  202. cout<<endl;
  203. break;
  204. case 3:
  205. ispis_datum();
  206. cout<<endl;
  207. break;
  208. case 4:
  209. if(brisi_naziv()) {
  210. cout<<"Uspjesno obrisano."<<endl;
  211. ispis();
  212. }
  213. else cout<<"Neuspjeh. Krivi naziv ili takav naziv ne postoji"<<endl;
  214. break;
  215. case 5:
  216. if(brisi_vrsta()) {
  217. cout<<"Uspjesno obrisano."<<endl;
  218. ispis();
  219. }
  220. else cout<<"Neuspjeh. Krivo ime vrste ili takva vrsta ne postoji";
  221. break;
  222. case 6:
  223. msort();
  224. ispis();
  225. cout<<endl;
  226. break;
  227. }
  228. }while(izbor!=0);
  229. system("pause");
  230. return 0;
  231. }

Report this snippet  

You need to login to post a comment.