SP - Zadatak 1 - ATP Liste - Lista kao polje


/ Published in: C++
Save to your folder(s)

Datoteka zaglavlja
lista kao polje


Copy this code and paste it in your HTML
  1. #ifndef LISTA_POLJE_H
  2. #define LISTA_POLJE_H
  3.  
  4. #include <iostream>
  5. #include <cstring> // memcpy()
  6. using namespace std;
  7.  
  8. #define MAKSIMALNI_BROJ_ELEMENATA_LISTE 5000
  9. #define ERROR_CODE -1
  10.  
  11. struct tDatum {
  12. short dan, mjesec, godina;
  13. };
  14.  
  15. struct tZiv {
  16. int sifra;
  17. char vrsta[50], naziv[50];
  18. float cijena;
  19. tDatum dat_dostave;
  20. };
  21.  
  22. struct tLista {
  23. tZiv el[MAKSIMALNI_BROJ_ELEMENATA_LISTE];
  24. int kursor;
  25. };
  26.  
  27. typedef tLista Lista;
  28. typedef int Element;
  29.  
  30. typedef tZiv Zivotinja;
  31. typedef tDatum Datum;
  32.  
  33. bool operator==(Datum d1, Datum d2) {
  34. if(d1.dan != d2.dan) return false;
  35. if(d1.mjesec != d2.mjesec) return false;
  36. if(d1.godina != d2.godina) return false;
  37. return true;
  38. }
  39.  
  40. bool operator==(Zivotinja z1, Zivotinja z2) {
  41. if(z1.sifra != z2.sifra) return false;
  42. if(z1.cijena != z2.cijena) return false;
  43. if(z1.sifra != z2.sifra) return false;
  44. if(z1.sifra != z2.sifra) return false;
  45. if(!(z1.dat_dostave == z2.dat_dostave) ) return false;
  46. return true;
  47. }
  48.  
  49. ostream& operator<<(ostream& os, Datum d1) {
  50. os << d1.dan << '.' << d1.mjesec << '.' << d1.godina << '.';
  51. return os;
  52. }
  53.  
  54. ostream& operator<<(ostream& os, Zivotinja z1) {
  55. os << "Sifra: " << z1.sifra << endl;
  56. os << "Naziv: " << z1.naziv << endl;
  57. os << "Vrsta: " << z1.vrsta << endl;
  58. os << "Cijena: " << z1.cijena << endl;
  59. os << "Datum dostave: " << z1.dat_dostave << endl;
  60. return os;
  61. }
  62.  
  63. // proto func
  64. Element FirstL(Lista*);
  65. Element EndL(Lista*);
  66.  
  67. Element NextL(Element, Lista*);
  68. Element PreviousL(Element, Lista*);
  69.  
  70. Element LocateL(Zivotinja, Lista*);
  71. bool InsertL(Zivotinja, Element, Lista*);
  72.  
  73. bool DeleteL(Element, Lista*);
  74. Zivotinja RetrieveL(Element, Lista*);
  75.  
  76. void DeleteAllL(Lista*);
  77. void InitL(Lista*);
  78.  
  79. // func
  80. Element FirstL(Lista* L) {
  81. return 0;
  82. }
  83. Element EndL(Lista* L) {
  84. return L->kursor;
  85. }
  86.  
  87. Element NextL(Element p, Lista* L) {
  88. if(p==EndL(L) ) return ERROR_CODE;
  89. return p+1;
  90. }
  91. Element PreviousL(Element p, Lista* L) {
  92. if(p==FirstL(L) ) return ERROR_CODE;
  93. return p-1;
  94. }
  95.  
  96. Element LocateL(Zivotinja x, Lista* L) {
  97. for(int i=0; i<L->kursor; i++)
  98. if(L->el[i] == x) return i;
  99. return EndL(L);
  100. }
  101. bool InsertL(Zivotinja x, Element p, Lista* L) {
  102. if(p<0 || p>L->kursor) return 0;
  103. if(L->kursor >= MAKSIMALNI_BROJ_ELEMENATA_LISTE) return 0;
  104. for(int i=L->kursor++; i>p; i--)
  105. L->el[i] = L->el[i-1];
  106. L->el[p] = x;
  107. return 1;
  108. }
  109.  
  110. bool DeleteL(Element p, Lista* L) {
  111. if(p<0 || p>L->kursor) return 0;
  112. for(int i=p+1; i<L->kursor; i++)
  113. L->el[i-1] = L->el[i];
  114. L->kursor--;
  115. return 1;
  116. }
  117. Zivotinja RetrieveL(Element p, Lista* L) {
  118. return L->el[p];
  119. }
  120.  
  121. void DeleteAllL(Lista* L) {
  122. L->kursor = 0;
  123. }
  124. void InitL(Lista* L) {
  125. L->kursor = 0;
  126. }
  127.  
  128. #endif // LISTA_POLJE_H
  129.  
  130. // hackerma3x (2012)

Report this snippet


Comments

RSS Icon Subscribe to comments

You need to login to post a comment.