Posted By

Dominik-DinoPavlekovic on 11/11/12


Tagged

Liste pokazivaci polje ATP evidencija zivotinja


Versions (?)

zad1.cpp


 / Published in: C++
 

evidencija zivotinja u trgovini kucnim ljubimcima

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

Report this snippet  

You need to login to post a comment.