Posted By

mkamence2 on 11/12/12


Tagged

Strukture podataka


Versions (?)

Main program


 / Published in: C++
 

Glavni dio programa_Ċ½ivotinjsko carstvo

  1. #include <iostream>
  2. //#include "lista_polje.h"
  3. #include "lista_pokazivac.h"
  4. #include <string.h>
  5. using namespace std;
  6.  
  7. tZivotinja * provjera = new tZivotinja;
  8. tSveZivotinje * zadnji2 = new tSveZivotinje;
  9. int br=0;
  10.  
  11. bool dodaj(tSveZivotinje * glava) {
  12. int brojac=NumberL(glava);
  13. bool uspjesno=false;
  14. tZivotinja * novi = new tZivotinja;
  15. UnosL(novi);
  16. while(brojac>=0) {
  17. if(brojac==0) {
  18. InsertL(novi,0,glava);
  19. uspjesno=true;
  20. br=1;
  21. break;
  22. }//if
  23. provjera=RetrieveL(brojac,glava);
  24. if(novi->sifra>provjera->sifra) {
  25. InsertL(novi,brojac,glava);
  26. uspjesno=true;
  27. br=brojac+1;
  28. break;
  29. }//if
  30. else
  31. brojac--;
  32. }//while
  33. if(!uspjesno)return 0;
  34. return 1;
  35. }//dodaj
  36.  
  37. void ispis(tSveZivotinje * glava) {
  38. tZivotinja * trenutno;
  39. int brojac= NumberL(glava);
  40. if(br==0)return;
  41. for(int i=br; i<=brojac; i++) {
  42. trenutno=RetrieveL(i,glava);
  43. IspisL(trenutno);
  44. }//for
  45. }//ispis
  46.  
  47. void pretraga(tSveZivotinje * glava) {
  48. int brojac = NumberL(glava);
  49. tZivotinja * trenutno;
  50. int brojac2=0;
  51. for(int i=1; i<=brojac; i++) {
  52. trenutno=RetrieveL(i,glava);
  53. if(trenutno->godina>2012) {
  54. IspisL(trenutno);
  55. brojac2++;
  56. }
  57. else if(trenutno->godina==2012&&trenutno->mjesec>9) {
  58. IspisL(trenutno);
  59. brojac2++;
  60. }
  61. else if(trenutno->godina==2012&&trenutno->mjesec==9&&trenutno->dan>23) {
  62. IspisL(trenutno);
  63. brojac2++;
  64. }
  65. }//for
  66.  
  67. cout<<"Ukupan broj zivotinja dostavljenih nakon 23. rujna 2012 je: "<<brojac2 <<endl;
  68.  
  69. }//pretraga
  70.  
  71. bool brisi(tSveZivotinje*glava) {
  72. bool obrisano=0;
  73. cout<<"Naziv zivotinje: ";
  74. char naziv[40];
  75. cin.ignore();
  76. cin.getline(naziv,40);
  77. int brojac=NumberL(glava);
  78. tZivotinja *trenutni;
  79. for(int i=1; i<=brojac; i++) {
  80. trenutni=RetrieveL(i,glava);
  81. if(strcmp(trenutni->naziv,naziv)==0) {
  82. DeleteL(i,glava);
  83. obrisano=1;
  84. }
  85. }
  86. return obrisano;
  87. }
  88.  
  89. bool brisi_sve(tSveZivotinje*glava) {
  90. bool obrisano=0;
  91. cout<<"Naziv vrste: ";
  92. char naziv[40];
  93. cin.ignore();
  94. cin.getline(naziv,40);
  95. int brojac=NumberL(glava);
  96. tZivotinja*trenutni;
  97. for(int i=1; i<=brojac; i++) {
  98. trenutni=RetrieveL(i,glava);
  99. if(!strcmp(trenutni->vrsta,naziv)) {
  100. DeleteL(i,glava);
  101. brojac=NumberL(glava);
  102. i=1;
  103. obrisano=1;
  104. }
  105. }
  106. return obrisano;
  107. } //
  108.  
  109. void merge(tZivotinja * a[],int low, int pivot, int high ) {
  110. int h,i,j,k;
  111. tZivotinja * b[500];
  112. h=low;
  113. i=low;
  114. j=pivot+1;
  115.  
  116. j=pivot+1;
  117.  
  118. while((h<=pivot)&&(j<=high)) {
  119. if(a[h]->cijena>=a[j]->cijena) {
  120. b[i]=a[h];
  121. h++;
  122. }
  123. else {
  124. b[i]=a[j];
  125. j++;
  126. }
  127. i++;
  128. }
  129. if(h>pivot) {
  130. for(k=j; k<=high; k++) {
  131. b[i]=a[k];
  132. i++;
  133. }
  134. }
  135. else {
  136. for(k=h; k<=pivot; k++ ) {
  137. b[i]=a[k];
  138. i++;
  139. }
  140. }
  141. for(k=low; k<=high; k++) a[k]=b[k];
  142. }
  143.  
  144. void mergesort(tZivotinja * a[], int low, int high) {
  145. int pivot;
  146. if(low<high) {
  147. pivot=(low+high)/2;
  148. mergesort(a,low,pivot);
  149. mergesort(a,pivot+1,high);
  150. merge(a,low,pivot,high);
  151. }
  152. }
  153.  
  154. void sortiraj(tSveZivotinje * glava) {
  155. int brojac = NumberL(glava);
  156. tZivotinja *novi[brojac];
  157. for(int i=1; i<=brojac; i++)
  158. novi[i-1] = RetrieveL(i,glava);
  159. cout<<"Ispis uzlazno";
  160. for(int i=0; i<brojac; i++)
  161. IspisL(novi[i]);
  162. mergesort(novi,0,brojac-1);
  163. cout<<"Sortirani elementi silazno";
  164. for(int i=0; i<brojac; i++) {
  165. IspisL(novi[i]);
  166. }
  167. } //
  168.  
  169. int main() {
  170. tSveZivotinje*glava;
  171. glava=InitL(glava);
  172. int izbor;
  173. do {
  174. system("cls");
  175. cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje:"<< endl;
  176. cout<<"2. Ispis sadrzaja liste od sifre zivotinje koja je posljednja dodana:" << endl;
  177. cout<<"3. Pretraga i ispis svih zivotinja koje su dostavljene nakon 23.rujna 2012., njihov broj:" << endl;
  178. cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje:" << endl;
  179. cout<<"5. Brisanje svih zivotinja odredene vrste:" << endl;
  180. cout<<"6. Silazno sortiranje prema cijeni i nazivu:" << endl;
  181. cout<<"9. Izlaz iz programa:" << endl;
  182. cout<<"Vas izbor?: ";
  183. cin>>izbor;
  184. system("cls");
  185. switch(izbor) {
  186. case 1:
  187. if(dodaj(glava)==1)cout<<"Zapis uspjesno dodan";
  188. else cout << "Zapis nije uspjesno dodan.";
  189. break;
  190. case 2:
  191. ispis(glava);
  192. break;
  193. case 3:
  194. pretraga(glava);
  195. break;
  196. case 4:
  197. if(brisi(glava)==1)cout<<"Uspjesno obrisano.";
  198. else cout<<"Nije uspjesno obrisano-";
  199. break;
  200. case 5:
  201. if(brisi_sve(glava)==1)cout<<"Uspjesno obrisano.";
  202. else cout<<"Nije uspjesno obrisano.";
  203. break;
  204. case 6:
  205. sortiraj(glava);
  206. } //switch
  207. system("pause");
  208. }//do
  209. while(izbor!=9);
  210. return 0;
  211. }

Report this snippet  

You need to login to post a comment.