Posted By

daja2 on 11/12/12


Tagged

main programevidencijaivotinja


Versions (?)

MAIN datoteka


 / Published in: C++
 

Glavni program

  1. //GLAVNI PROGRAM ZA EVIDENCIJU ZIVOTINJA
  2. #include<iostream>
  3. #include<string>
  4. using namespace std;
  5.  
  6. //#include "lista_pokazivaci.h"
  7. #include "lista_polje.h"
  8.  
  9. bool isEmpty( list* L){
  10. return FirstL(L) == EndL(L);
  11. }
  12.  
  13. int unos(list *L){
  14. int poc=1;
  15. int sifra = 0;
  16. if(isEmpty(L))
  17. sifra = poc;
  18. else{
  19. sifra = RetrieveL(PreviousL(EndL(L),L),L).sifra+1;
  20. }
  21. podaci nov;
  22. cout <<"Sifra zivotinje: " << sifra << endl;
  23. nov.sifra = sifra;
  24. cout << "Naziv: "; cin.ignore();
  25. cin>>nov.naziv;
  26. cout << "Vrsta: ";
  27. cin>>nov.vrsta;
  28. cout << "Cijena: ";
  29. cin >> nov.cijena;
  30. if(nov.cijena < 0) return 0;
  31. cout << "Datum dostave(dan,mj,god)" << endl;
  32. cout << "Dan: ";
  33. cin >> nov.dat.dan;
  34. if(nov.dat.dan<1 || nov.dat.dan>31)
  35. return 0;
  36. cout << "Mjesec: ";
  37. cin >> nov.dat.mj;
  38. if(nov.dat.mj<1 || nov.dat.mj>12)
  39. return 0;
  40. cout << "Godina: ";
  41. cin >> nov.dat.god;
  42. if(nov.dat.god<1990)
  43. return 0;
  44.  
  45. InsertL(nov,EndL(L),L);
  46. return 1;
  47. }
  48.  
  49. void ispis(list *L){
  50.  
  51. element zadnji = EndL(L);
  52. while(zadnji != FirstL(L)){
  53.  
  54. podaci ziv = RetrieveL(PreviousL(zadnji,L),L);
  55.  
  56. cout << "Sifra: " << ziv.sifra << endl;
  57. cout << "Naziv: " << ziv.naziv << endl;
  58. cout << "Vrsta: " << ziv.vrsta << endl;
  59. cout << "Cijena: " << ziv.cijena << endl;
  60. cout << "Datum dostave: "
  61. << ziv.dat.dan<<"."
  62. <<ziv.dat.mj << "."
  63. <<ziv.dat.god<<"."<<endl;
  64. cout <<endl;
  65. zadnji = PreviousL(zadnji,L);
  66. }
  67. }
  68.  
  69. void filter(int dan, int mj, int god, list* L){
  70.  
  71. if(isEmpty(L)){
  72. cout << endl << "Nema pronađenih životinja" << endl;
  73. return;
  74. }
  75.  
  76. int broj = 0;
  77. element trenutni = FirstL(L);
  78.  
  79. struct{
  80. int dan,mj,god;
  81. }dost;
  82.  
  83. while(trenutni != EndL(L)){
  84. podaci ziv = RetrieveL(trenutni,L);
  85. dost.dan = ziv.dat.dan;
  86. dost.mj = ziv.dat.mj;
  87. dost.god = ziv.dat.god;
  88.  
  89. if((dost.god>god) ||
  90. ((dost.god==god)&&(dost.mj>mj)) ||
  91. ((dost.god==god)&&(dost.mj==mj)) && (dost.dan>dan)){
  92. broj++;
  93. cout << "Sifra: " << ziv.sifra << endl;
  94. cout << "Naziv: " << ziv.naziv << endl;
  95. cout << "Vrsta: " << ziv.vrsta << endl;
  96. cout << "Cijena: " << ziv.cijena << endl;
  97. cout << "Datum dostave: " << ziv.dat.dan<<"."
  98. <<ziv.dat.mj << "."
  99. <<ziv.dat.god<<"."<<endl;
  100. cout << endl;
  101. }
  102. trenutni = NextL(trenutni,L);
  103. }
  104. cout << endl << "Broj pronadjenih zivotinja: " << broj << endl;
  105. }
  106.  
  107. int brisinaziv(list* L){
  108. char naziv[30];
  109.  
  110. cin.ignore();
  111. cout << "Unesite naziv zivotinje koju zelite obrisati: "; cin.getline(naziv, 29, '\n');
  112.  
  113. if(isEmpty(L))
  114. return 0;
  115.  
  116. element trenutni = FirstL(L);
  117. bool postoji = false;
  118. while(trenutni != EndL(L)){
  119. podaci ziv = RetrieveL(trenutni,L);
  120. if(strcmp(ziv.naziv,naziv)==0){
  121. postoji = true;
  122. break;
  123. }
  124. trenutni = NextL(trenutni,L);
  125. }
  126.  
  127. if(postoji){
  128. DeleteL(trenutni,L);
  129. }
  130. else
  131. return 0;
  132.  
  133. return 1;
  134. }
  135.  
  136. int brisivrsta(list* L){
  137. char vrsta[30];
  138. cin.ignore();
  139. cout << "Unesite vrstu zivotinja za brisanje: "; cin.getline(vrsta, 29, '\n');
  140.  
  141. element trenutni = FirstL(L);
  142. bool postoji = false;
  143. while(trenutni != EndL(L)){
  144. podaci ziv = RetrieveL(trenutni,L);
  145. if(strcmp(ziv.vrsta,vrsta)==0){
  146. postoji = true;
  147. DeleteL(trenutni,L);
  148. }
  149. trenutni = NextL(trenutni,L);
  150. }
  151. if(!postoji)
  152. return 0;
  153. return 1;
  154. }
  155.  
  156. void Spoji(podaci polje[], int prvi, int sredina, int drugi){
  157. int i=prvi, j=sredina+1, k=0;
  158. podaci *b=new podaci[drugi-prvi+1];
  159.  
  160. while(i<=sredina && j<=drugi){
  161. if(polje[i].cijena>polje[j].cijena)
  162. b[k++]=polje[i++];
  163. else if(polje[i].cijena<polje[j].cijena)
  164. b[k++]=polje[j++];
  165. if(polje[i].cijena==polje[j].cijena){
  166. if(strcmp(polje[i].naziv,polje[j].naziv)==1)
  167. b[k++]=polje[i++];
  168. else
  169. b[k++]=polje[j++];
  170. }
  171. }
  172. while(j<=drugi)
  173. b[k++]=polje[j++];
  174. while(i<=sredina)
  175. b[k++]=polje[i++];
  176. for(int c=0;c<=drugi-prvi;c++)
  177. polje[c+prvi]=b[c];
  178. delete []b;
  179. }
  180.  
  181. void Mergesort(podaci polje[], int prvi, int drugi){
  182. if(prvi<drugi){
  183. int sredina=(prvi+drugi)/2;
  184. Mergesort(polje,prvi,sredina);
  185. Mergesort(polje,sredina+1,drugi);
  186. Spoji(polje,prvi,sredina,drugi);
  187. }
  188. }
  189. void Mergesort(podaci polje[],int vel){
  190. Mergesort(polje,0,vel-1);
  191. }
  192. void Prep(list *glavno){
  193. if(FirstL(glavno)!=EndL(glavno)){
  194. int broj=0;
  195. element poz=FirstL(glavno);
  196. while(false==(!true)){
  197. broj++;
  198. poz=NextL(poz,glavno);
  199. if(poz==EndL(glavno))
  200. break;
  201. }
  202. poz=FirstL(glavno);
  203. podaci *sort=new podaci[broj];
  204. int mj=0;
  205. while(false==(!true)){
  206. sort[mj]=RetrieveL(poz,glavno);
  207. mj++;
  208. poz=NextL(poz,glavno);
  209. if(poz==EndL(glavno))
  210. break;
  211. }
  212. Mergesort(sort,broj);
  213. for(int i=0;i<broj;i++){
  214. cout<<endl<<"Sifra: "<<sort[i].sifra;
  215. cout<<endl<<"Cijena: "<<sort[i].cijena;
  216. cout<<endl<<"Naziv: "<<sort[i].naziv;
  217. cout<<endl<<"Vrsta: "<<sort[i].vrsta;
  218. cout<<endl<<"Datum dostave: "
  219. <<sort[i].dat.dan<<"."
  220. <<sort[i].dat.mj<<"."
  221. <<sort[i].dat.god<<"."<<endl;
  222. }
  223. delete []sort;
  224. }
  225. else
  226. cout<<endl<<"Prazna lista!"<<endl;
  227. }
  228.  
  229. int main(){
  230.  
  231. list* L = NULL;
  232.  
  233. L = InitL(L);
  234.  
  235. int odabir = 0;
  236.  
  237. do{
  238. cout << endl;
  239. cout << "IZBORNIK" << endl << endl;
  240. cout << "1.Unos zivotinje" << endl;
  241. cout << "2.Popis zivotinja" << endl;
  242. cout << "3.Zivotinje dostavljene nakon 23.09.2012."<<endl;
  243. cout << "4.Brisanje prema nazivu" << endl;
  244. cout << "5.Brisanje prema vrsti" << endl;
  245. cout << "6.Silazno sortiranje zivotinja prema cijeni i nazivu" << endl;
  246. cout << "9.Izlaz" << endl << endl;
  247. cout << "Odabir: ";
  248. cin >> odabir;
  249. system("cls");
  250. switch(odabir){
  251. case 1:
  252. if(!unos(L)){
  253. cout << "Krivi unos!" << endl;
  254. }
  255. break;
  256. case 2:
  257. ispis(L);
  258. break;
  259. case 3:
  260. filter(23,9,2012,L);
  261. break;
  262. case 4:
  263. if(brisinaziv(L)){
  264. cout << "Obrisano." << endl;
  265. }
  266. else{
  267. cout << "Krivi unos!." << endl;
  268. }
  269. break;
  270. case 5:
  271. if(brisivrsta(L)){
  272. cout << "Uspješno obrisano!" << endl;
  273. }
  274. else{
  275. cout << "Krivi unos!" << endl;
  276. }
  277. break;
  278. case 6:
  279. Prep(L);
  280. break;
  281. case 9:
  282. break;
  283. default:
  284. cout << "Pogrešan unos!" << endl;
  285. }
  286. }while(odabir != 9);
  287.  
  288. DeleteAllL(L);
  289. system("pause");
  290. return 0;
  291. }

Report this snippet  

You need to login to post a comment.