Posted By

matakmonika on 11/12/12


Tagged


Versions (?)

lista_polje


 / Published in: C++
 

lista_polje

  1. struct datum {
  2. int dan, godina, mjesec;
  3. };
  4. struct podaci {
  5. int sifra;
  6. char vrsta[40],naziv[40];
  7. float cijena;
  8. datum dat_dost;
  9. };
  10. struct tlista {
  11. podaci zivotinja [5000];
  12. int cursor;
  13. };
  14.  
  15.  
  16. tlista lista;
  17. int sifra=1, br=0,v=0;
  18.  
  19. int firstl (tlista lista) {
  20. return 0;
  21. }
  22.  
  23.  
  24. void insertl(podaci x, int p, tlista& lista){
  25. lista.zivotinja[p]=x;
  26. lista.cursor++;
  27. }
  28.  
  29. int endl(tlista& lista){
  30. return lista.cursor;
  31. }
  32.  
  33. int nextl (int p, tlista& lista){
  34. if (p==endl(lista)-1) return endl (lista);
  35. else return p+1;
  36. }
  37.  
  38. int locatel (char x[], tlista& lista){
  39. int p=endl(lista);
  40. bool lociran = 0;
  41. for(int i=0;i<p;i++)
  42. if(!strcmp(lista.zivotinja[i].naziv,x)||(v==1&&!strcmp(lista.zivotinja[i].vrsta,x))){ lociran=1;
  43. return i;}
  44. if (!lociran) return p;
  45. }
  46.  
  47. void initl (tlista& lista){
  48. lista.cursor=0;
  49. }
  50.  
  51. void deletel(int p, tlista& lista){
  52. if(p==endl(lista)-1) lista.cursor--;
  53. else{
  54. for (int i=p;i<endl(lista)-1;i++)
  55. lista.zivotinja[i]=lista.zivotinja[i+1];
  56. lista.cursor--;}
  57. }
  58. podaci retrieveL (int p, tlista& lista){
  59. return lista.zivotinja [p];
  60. }
  61. void deleteallL (tlista &lista) {
  62. lista.cursor=0;
  63. }
  64. void spoji(podaci a[], int i, int k, int j) {
  65. int I=i,J=k+1,K=0;
  66. podaci *b = new podaci [j-i+1];
  67.  
  68. while(I<=k && J<=j){
  69.  
  70. if(a[I].cijena>a[J].cijena) b[K++]=a[I++];
  71. else if(a[I].cijena<a[J].cijena) b[K++]=a[J++];
  72. else if(strcmp(a[I].naziv,a[J].naziv)==-1) b[K++]=a[J++];
  73. else b[K++]=a[I++];
  74. }
  75.  
  76. if(I>k) while(J<=j) b[K++]=a[J++];
  77. else while(I<=k) b[K++]=a[I++];
  78.  
  79. for(I=0;I<=j-i;I++) a[i+I]=b[I];
  80. delete [] b;
  81.  
  82. }
  83.  
  84. void msort(podaci a[],int i, int j) {
  85. if(i<j) {
  86. int k=(i+j)/2;
  87. msort(a,i,k);
  88. msort(a,k+1,j);
  89. spoji(a,i,k,j);
  90. }
  91. }
  92.  
  93. void msort() {
  94. msort(lista.zivotinja,0,br-1);
  95. }

Report this snippet  

You need to login to post a comment.