Posted By

milan_pavlovic on 11/11/12


Tagged

data list lista structures adt Strukture podataka implementacija ATP


Versions (?)

ATP Lista - glavni program


 / Published in: C++
 

Glavno programsko rješenje zadatka izrade programa za evidenciju životinja u trgovini kućnim ljubimcima. Fakultet organizacije i informatike Varaždin Kolegij: Strukture podataka

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

Report this snippet  

You need to login to post a comment.