Posted By

zokisp on 11/12/12


Tagged

lista pokazivac polja ATP zadatak


Versions (?)

zadatak 1 sp


 / Published in: C++
 

RjeĊĦenje zadatka 1 iz kolegija strukture podataka

  1. #include <iostream>
  2. #include <windows.h>
  3. #include "l_polja.h"
  4. //#include "l_pok.h"
  5. #include <string.h>
  6. using namespace std;
  7. pzivotinja*provjera=new pzivotinja;
  8. tzoo*zadnji2=new tzoo;
  9. int br=0;
  10.  
  11. bool dodaj(tzoo*glava){
  12. int brojac=NumberL(glava);
  13. bool uspjesno=false;
  14. pzivotinja*novi=new pzivotinja;
  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. }
  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. }
  30. else
  31. brojac--;
  32. }
  33. if(!uspjesno)return 0;
  34. return 1;
  35. }
  36.  
  37. void ispis(tzoo*glava){
  38. pzivotinja*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. }
  45. }
  46.  
  47. void pretraga(tzoo*glava){
  48. int brojac=NumberL(glava);
  49. pzivotinja*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. }
  66. cout<<"Ukupan broj zivotinja dostavljenih nakon 23. rujna 2012 je: "<<brojac2<<endl;
  67. }
  68.  
  69. bool brisi(tzoo*glava){
  70. bool obrisano=0;
  71. cout<<"Naziv zivotinje: ";
  72. char naziv[40];
  73. cin.ignore();
  74. cin.getline(naziv,40);
  75. int brojac=NumberL(glava);
  76. pzivotinja*trenutni;
  77. while(brojac>0){
  78. trenutni=RetrieveL(brojac,glava);
  79. if(strcmp(trenutni->naziv,naziv)==0){
  80. DeleteL(brojac,glava);
  81. brojac--;
  82. obrisano=1;
  83. }
  84. else brojac--;
  85. }
  86. return obrisano;
  87. }
  88.  
  89. bool brisi_sve(tzoo*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. pzivotinja*trenutni;
  97. while(brojac>0){
  98. trenutni=RetrieveL(brojac,glava);
  99. if(!strcmp(trenutni->vrsta,naziv)){
  100. DeleteL(brojac,glava);
  101. brojac--;
  102. obrisano=1;
  103. }
  104. else brojac--;
  105. }
  106. return obrisano;
  107. }
  108.  
  109.  
  110. void merge(pzivotinja *a[],int low,int pivot,int high)
  111. {
  112. int h,i,j,k;
  113. pzivotinja*b[50];
  114. h=low;
  115. i=low;
  116. j=pivot+1;
  117.  
  118. while((h<=pivot)&&(j<=high))
  119. {
  120. if(a[h]->cijena>=a[j]->cijena)
  121. {
  122. b[i]=a[h];
  123. h++;
  124. }
  125. else
  126. {
  127. b[i]=a[j];
  128. j++;
  129. }
  130. i++;
  131. }
  132. if(h>pivot)
  133. {
  134. for(k=j; k<=high; k++)
  135. {
  136. b[i]=a[k];
  137. i++;
  138. }
  139. }
  140. else
  141. {
  142. for(k=h; k<=pivot; k++)
  143. {
  144. b[i]=a[k];
  145. i++;
  146. }
  147. }
  148. for(k=low; k<=high; k++) a[k]=b[k];
  149. }
  150. void mergesort(pzivotinja *a[], int low,int high)
  151. {
  152. int pivot;
  153. if(low<high)
  154. {
  155. pivot=(low+high)/2;
  156. mergesort(a,low,pivot);
  157. mergesort(a,pivot+1,high);
  158. merge(a,low,pivot,high);
  159. }
  160. }
  161.  
  162. void sortiraj(tzoo*glava){
  163. int brojac=NumberL(glava);
  164. pzivotinja*novi[brojac];
  165. for(int i=1;i<=brojac;i++)
  166. novi[i-1]=RetrieveL(i,glava);
  167. cout<<"ISPIS ELEMENATA\n";
  168. for(int i=0;i<brojac;i++)
  169. IspisL(novi[i]);
  170. mergesort(novi,0,brojac-1);
  171. cout<<"SORTIRANI ELEMENTI\n===============================\n";
  172. for(int i=0;i<brojac;i++){
  173. IspisL(novi[i]);
  174. }
  175. }
  176.  
  177. int main()
  178. {
  179. tzoo*glava;
  180. glava=InitL(glava);
  181. int izbor;
  182. do
  183. {
  184. cout<<"\n\n";
  185. cout<<" IZBORNIK\n";
  186. cout<<"============================================================================\n";
  187. cout<<"1. Dodavanje novog zapisa u listu prema rastucoj sifri zivotinje\n\n";
  188. cout<<"2. Ispis sadrzaja liste pocevsi od sifre zivotinje koja je posljednja dodana\n\n";
  189. cout<<"3. Pretraga liste te ispis svih zivotinja koje su dostavljene nakon\n 23.rujna 2012. godine te njihov broj\n\n";
  190. cout<<"4. Brisanje pojedinacnih unosa prema nazivu zivotinje\n\n";
  191. cout<<"5. Brisanje svih zivotinja odabrane vrste \n\n";
  192. cout<<"6. Silazno sortiranje zivotinja prema cijeni i nazivu\n";
  193. cout<<"============================================================================\n";
  194. cin>>izbor;
  195. system("cls");
  196. switch(izbor)
  197. {
  198. case 1:
  199. if(dodaj(glava)==1)cout<<"Zapis uspjesno dodan\n";
  200. else cout<<"Zapis nije uspjesno dodan!\n";
  201. break;
  202. case 2:
  203. ispis(glava);
  204. break;
  205. case 3:
  206. pretraga(glava);
  207. break;
  208. case 4:
  209. if(brisi(glava)==1)cout<<"Uspjesno obrisano\n";
  210. else cout<<"Nije uspjesno obrisano\n";
  211. break;
  212. case 5:
  213. if(brisi_sve(glava)==1)cout<<"Uspjesno obrisano!\n";
  214. else cout<<"Nije uspjesno obrisano\n";
  215. break;
  216. case 6:
  217. sortiraj(glava);
  218. }
  219. system("pause");
  220. system("cls");
  221. }
  222. while(izbor!=9);
  223. return 0;
  224. }

Report this snippet  

You need to login to post a comment.