Posted By

jaksas on 11/12/12


Tagged

listapokazivacipolja


Versions (?)

Glavni program


 / Published in: C++
 

Glavni program za zivotinje

  1. #include <iostream>
  2. #include <string>
  3. #include "lista_polja.cpp"
  4. using namespace std;
  5. zivotinje *provjera=new zivotinje;
  6. pzivotinje *zadnji=new pzivotinje;
  7. #define POCETAK 1
  8. bool isEmpty( pzivotinje* ziv){
  9. return FirstL(ziv) == EndL(ziv);
  10. }
  11. int dodavanje(pzivotinje *ziv){
  12. int sifra = 0;
  13. if(isEmpty(ziv))
  14. sifra = POCETAK;
  15. else{
  16. sifra = RetrieveL(PreviousL(EndL(ziv),ziv),ziv).sifra+1;
  17. }
  18. zivotinje novo;
  19. cout <<"Nova zivotinja #" << sifra << endl;
  20. novo.sifra = sifra;
  21. cout << "Naziv: "; cin.ignore(); cin.getline(novo.naziv, 29, '\n');
  22. cout << "Vrsta: "; cin.getline(novo.vrsta, 29, '\n');
  23. cout << "Cijena: "; cin >> novo.cijena;
  24. if(novo.cijena < 0)
  25. return 0;
  26. cout << "Dan: "; cin >> novo.datum1.dan;
  27. if(novo.datum1.dan<1 || novo.datum1.dan>31)
  28. return 0;
  29. cout << "Mjesec: "; cin >> novo.datum1.mjesec;
  30. if(novo.datum1.mjesec<1 || novo.datum1.mjesec>12)
  31. return 0;
  32. cout << "Godina: "; cin >> novo.datum1.godina;
  33. if(novo.datum1.godina<1900)
  34. return 0;
  35. InsertL(novo,EndL(ziv),ziv);
  36. return 1;
  37. }
  38. void ispis(pzivotinje*glava){
  39. el zadnji = EndL(glava);
  40. while(zadnji != FirstL(glava)){
  41. zivotinje ziv = RetrieveL(PreviousL(zadnji,glava),glava);
  42. cout << "Sifra: " << ziv.sifra << endl;
  43. cout << "Naziv: " << ziv.naziv << endl;
  44. cout << "Vrsta: " << ziv.vrsta << endl;
  45. cout << "Cijena: " << ziv.cijena << endl;
  46. cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "." <<ziv.datum1.godina<<"."<<endl;
  47. cout <<endl;
  48. zadnji = PreviousL(zadnji,glava);
  49. }
  50. }
  51. void pretraga_zivotinje(int dan, int mjesec, int godina,pzivotinje*glava){
  52. if(isEmpty(glava)){
  53. cout << endl << "Broj pronadjenih zivotinja: 0" << endl;
  54. return;
  55. }
  56. int broj = 0;
  57. struct{
  58. int dan, mjesec, godina;
  59. }datum;
  60. el tekuci = FirstL(glava);
  61. while(tekuci != EndL(glava)){
  62. zivotinje ziv = RetrieveL(tekuci,glava);
  63. datum.dan = ziv.datum1.dan;
  64. datum.mjesec = ziv.datum1.mjesec;
  65. datum.godina = ziv.datum1.godina;
  66.  
  67. if((datum.godina>godina) || ((datum.godina==godina)&&(datum.mjesec>mjesec)) || ((datum.godina==godina)&&(datum.mjesec==mjesec)) && (datum.dan>dan)){
  68. broj++;
  69. cout << "Sifra: " << ziv.sifra << endl;
  70. cout << "Naziv: " << ziv.naziv << endl;
  71. cout << "Vrsta: " << ziv.vrsta << endl;
  72. cout << "Cijena: " << ziv.cijena << endl;
  73. cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "."<<ziv.datum1.godina<<"."<<endl;
  74. cout << endl;
  75. }
  76. tekuci = NextL(tekuci,glava);
  77. }
  78. cout << endl << "Broj pronadjenih zivotinja: " << broj << endl;
  79. }
  80.  
  81. int brisanje(pzivotinje*glava){
  82. cin.ignore();
  83. char n[30];
  84. cout << "Unesite naziv zivotinja za brisanje: "; cin.getline(n, 29, '\n');
  85. el trenutni = FirstL(glava);
  86. bool ima_ga = false;
  87. while(trenutni != EndL(glava)){
  88. zivotinje zivine = RetrieveL(trenutni,glava);
  89. if(strcmp(zivine.naziv,n)==0){
  90. ima_ga = true;
  91. DeleteL(trenutni,glava);
  92. }
  93. trenutni = NextL(trenutni,glava);
  94. }
  95. if(!ima_ga) return 0;
  96. return 1;
  97.  
  98. }
  99. int brisanje_vrsti(pzivotinje*glava){
  100. cin.ignore();
  101. char v[30];
  102. cout << "Unesite vrsti zivotinja za brisanje: "; cin.getline(v, 29, '\n');
  103. el trenutni = FirstL(glava);
  104. bool ima_ga = false;
  105. while(trenutni != EndL(glava)){
  106. zivotinje zivine = RetrieveL(trenutni,glava);
  107. if(strcmp(zivine.vrsta,v)==0){
  108. ima_ga = true;
  109. DeleteL(trenutni,glava);
  110. }
  111. trenutni = NextL(trenutni,glava);
  112. }
  113. if(!ima_ga) return 0;
  114. return 1;
  115.  
  116. }
  117. void spoji(zivotinje *polje,int donji,int sredina,int gornji){
  118. int h,i,j,k;
  119. h=donji;
  120. i=donji;
  121. j=sredina+1;
  122. zivotinje *temp = new zivotinje[gornji-donji+1];
  123. while((h<=sredina)&&(j<=gornji)){
  124. if(polje[h].cijena>polje[j].cijena || ((polje[h].cijena==polje[j].cijena)&&(strcmp(polje[h].naziv, polje[j].naziv)>0))){
  125. temp[i]=polje[h];
  126. h++;
  127. }
  128. else{
  129. temp[i]=polje[j];
  130. j++;
  131. }
  132. i++;
  133. }
  134. if(h>sredina){
  135. for(k=j; k<=gornji; k++){
  136. temp[i]=polje[k];
  137. i++;
  138. }
  139. }
  140. else{
  141. for(k=h; k<=sredina; k++){
  142. temp[i]=polje[k];
  143. i++;
  144. }
  145. }
  146. for(k=donji; k<=gornji; k++) polje[k]=temp[k];
  147. delete [] temp;
  148. }
  149. void mergesort(zivotinje *polje, int donji,int gornji ){
  150. int sredina;
  151. if(donji<gornji){
  152. sredina=(donji+gornji)/2;
  153. mergesort(polje,donji,sredina);
  154. mergesort(polje,sredina+1,gornji);
  155. spoji(polje,donji,sredina,gornji);
  156. }
  157. }
  158.  
  159.  
  160. void sortiraj(pzivotinje *glava){
  161. int broj=0;
  162. el trenutni = FirstL(glava);
  163. while(trenutni != EndL(glava)){
  164. cout << "pas";
  165. broj++;
  166. trenutni = NextL(trenutni,glava);
  167. }
  168. zivotinje* polje = new zivotinje[broj];
  169. trenutni = FirstL(glava);
  170. int i = 0;
  171. while(trenutni != EndL(glava)){
  172. polje[i] = RetrieveL(trenutni,glava);
  173. trenutni = NextL(trenutni,glava);
  174. i++;
  175. }
  176. mergesort(polje,0,broj-1);
  177. DeleteallL(glava);
  178. glava=NULL;
  179. glava = InitL(glava);
  180. cout << broj << endl;
  181. cout << "SORTIRANO SILAZNO PREMA CIJENI I NAZIVU" << endl;
  182. for( i = 0; i < broj; i++){
  183. InsertL(polje[i],EndL(glava),glava);
  184. zivotinje ziv = polje[i];
  185. cout << "Sifra: " << ziv.sifra << endl;
  186. cout << "Naziv: " << ziv.naziv << endl;
  187. cout << "Vrsta: " << ziv.vrsta << endl;
  188. cout << "Cijena: " << ziv.cijena << endl;
  189. cout << "Datum dostave: " << ziv.datum1.dan<<"."<<ziv.datum1.mjesec << "."<<ziv.datum1.godina<<"."<<endl;
  190. cout <<endl;
  191. }
  192. }
  193. int main(){
  194. int odabir;
  195. lista* glava=NULL;
  196. glava=InitL(glava);
  197. do{
  198. cout << "==================================="<< endl;
  199. cout << "1.Dodavanje zapisa u listu prema rastucoj sifri zivotina"<< endl;
  200. cout << "2.Pretraga liste i ispis svih zivotinja od 23. rujna 2012." << endl;
  201. cout << "3.Brisanje pojedina��ne unose prema nazivu zivotinje" << endl;
  202. cout << "4.Brisanje vrste zivotinje" << endl;
  203. cout << "5.Silazno sortirati sadr�¾aj liste prema prema cijeni i nazivu" << endl;
  204. cout << "6.Ispis podataka" << endl;
  205. cout << "9.Izlaz iz programa" << endl;
  206. cout << "==================================="<<endl;
  207. cout << "Unesite svoj odabir: " ;
  208. cin >> odabir;
  209. switch(odabir){
  210. case 1:
  211. dodavanje(glava);
  212. break;
  213. case 2:
  214. pretraga_zivotinje(23,9,2012,glava);
  215. break;
  216. case 3:
  217. brisanje(glava);
  218. break;
  219. case 4:
  220. brisanje_vrsti(glava);
  221. break;
  222. case 5:
  223. sortiraj(glava);
  224. break;
  225. case 6:
  226. cout<< " Ispis " << endl;
  227. ispis(glava);
  228. break;
  229. }
  230. }
  231. while(odabir!=9);
  232. cout << "Kraj programa. " << endl;
  233. system("Pause");
  234. return 0;
  235. }

Report this snippet  

Comments

RSS Icon Subscribe to comments
Posted By: lblazekfoihr on November 12, 2012

Ovaj program mi se svidio zato jer je funkcionalan i dosta je sličan mojem kodu u glavnom programu.

You need to login to post a comment.