SHARE
TWEET

Untitled

a guest Dec 9th, 2018 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. template <typename tip>
  6. class kontejner
  7. {
  8.       public:
  9.       virtual kontejner~() {};
  10.       virtual int br_elemenata() const = 0;
  11.       virtual tip trenutni() const = 0;
  12.       virtual bool prethodni() = 0;
  13.       virtual bool sljedeci() = 0;
  14.       virtual void pocetak() = 0;
  15.       virtual void kraj() = 0;
  16.       virtual void DodajIspred (const tip &) = 0;
  17.       virtual void DodajIza (const tip &) = 0;
  18.       virtual void obrisi() = 0;
  19.       virtual tip operator[](int n) const = 0;
  20.       virtual tip operator[] (int n) = 0;
  21. };
  22.  
  23. template <typename tip>
  24. class niz : public kontejner<tip>
  25. {
  26.       int kapacitet;
  27.       int br_el;
  28.       tip **elementi;
  29.       int tekuci;
  30.       public:
  31.              niz() (): kapacitet(100), br_el(0), tekuci(0), elementi (new tip*[kapacitet]) {};
  32.              ~niz();
  33.              niz const(niz &);
  34.              niz &operator = (const niz &);
  35.              int br_elemenata () const;
  36.              tip trenutni () const;
  37.              bool prethodni();
  38.              bool sljedeci();
  39.              void pocetak();
  40.              void kraj();
  41.              void DodajIspred(const tip &);
  42.              void DodajIza (const tip &);
  43.              void obrisi();
  44.              tip operator [] (int n) const;
  45.              tip operator [] (int n);
  46. };
  47.  
  48.  
  49. template <typename tip>
  50. niz(tip)::~niz()
  51. {
  52.         for (int i(0);i<br_el;i++)
  53.         { delete elementi[i]
  54.         delete [] elementi;
  55.         }
  56. }
  57.  
  58. template <typename tip>
  59. niz(tip)::niz(const niz &a) ; kapacitet(a.kapacitet), tekuci(a->tekuci), br_el(a.br_el), elementi(new tip*[kapacitet])
  60. {          
  61.            for (int i(0); i<a.br_el; i++) elementi[i] = new tip(a->elementi[i]);
  62.            }
  63.  
  64. template <typename tip>
  65. niz<tip>&niz<tip>::operator = (const niz &a)
  66. {
  67.     if (this == a) return *this;
  68.     if (kapacitet == a->kapacitet)
  69.     {
  70.         for (int i(0); i<br_el; i++ ) delete elementi[i];
  71.         br_el = a->br_el;
  72.         for (int i(0); i<br_el; i++) elementi[i] = new tip(a->elementi[i]);
  73.         return *this;
  74.     }
  75.     else
  76.     {
  77.         for (int i(0); i<br_el; i++) delete elementi[i];
  78.         delete [] elementi;
  79.         kapacitet = a->kapacitet;
  80.         br_el = a->br_el;
  81.         elementi = new tip*[kapacitet];
  82.         for (int i(0); i<br_el; i++) elementi[i] = a->elementi[i];
  83.     }
  84.     tekuci = a->tekuci;
  85.     return *this;
  86. }
  87.  
  88. template<typename tip>
  89. int niz<tip>::br_elemenata () const
  90. {
  91.     return br_el;
  92. }
  93.  
  94. template <typename tip>
  95. tip niz<tip>::trenutni () const
  96. {
  97.     if (br_el == 0) throw "Niz prazan";
  98.     return *elementi[tekuci-1];
  99. }
  100.  
  101. template <typename tip>
  102. bool niz<tip>::prethodni ()
  103. {
  104.     if (tekuci == 1) return false;
  105.     tekuci--;
  106.     return true;
  107. }
  108.  
  109. template <typename tip>
  110. bool niz<tip>::sljedeci ()
  111. {
  112.     if (tekuci == br_el) return false;
  113.     tekuci++;
  114.     return true;
  115. }
  116.  
  117. template <typename tip>
  118. void niz<tip>::pocetak ()
  119. {
  120.     tekuci = 1;
  121. }
  122.  
  123.  
  124. template <typename tip>
  125. void niz<tip>::kraj ()
  126. {
  127.     tekuci = br_el;
  128. }
  129.  
  130.  
  131. template <typename tip>
  132. void niz<tip>::DodajIspred(const tip &a)
  133. {
  134.     if (br_el == 0)
  135.     {
  136.         elementi[br_el++] = new tip(a);
  137.         tekuci = 1;
  138.         return;
  139.     }
  140.     if (br_el<kapacitet)
  141.     {
  142.         for (int i(br_el); i>=tekuci; i--) elementi[i] = elementi[i-1];
  143.         elementi[tekuci] = new tip(a);
  144.         br_el++;
  145.     }
  146.     else
  147.     {
  148.         kapacitet+=100;
  149.         tip **kopija (new tip*[kapacitet]);
  150.         for (int i(0); i<br_el; i++) kopija[i] = new tip(*elementi[i]);
  151.         for (int i(0); i<br_el; i++) delete elementi[i];
  152.         delete []elementi;
  153.         elementi = kopija;
  154.         for (int i(br_el); i>=tekuci; i--) elementi[i] = elementi[i-1];
  155.         elementi[tekuci++] = new tip(a);
  156.         br_el++;
  157.     }
  158. }
  159.  
  160. template<typename tip>
  161. void niz<tip>::DodajIza(const tip &a)
  162. {
  163.     if (br_el==0)
  164.     {
  165.         elementi[br_el++] = new tip (a);
  166.         tekuci = 1;
  167.         return;
  168.     }
  169.     if (br_el<kapacitet)
  170.     {
  171.         for (int i(br_el); i>tekuci; i--) elementi[i] = elementi[i-1];
  172.         elementi[tekuci] = new tip(a);
  173.         br_el++;
  174.     }
  175.     else
  176.     {
  177.         kapacitet+=100;
  178.         Info **kopija (new tip*[kapacitet]);
  179.         for (int i(0); i<br_el; i++) kopija[i] = new tip(*elementi[i]);
  180.         for (int i(0); i<br_el; i++) delete elementi[i];
  181.         delete []elementi;
  182.         elementi = kopija;
  183.         for (int i(br_el); i>tekuci; i--) elementi[i] = elementi[i-1];
  184.         elementi[tekuci++] = new tip(a);
  185.         br_el++;
  186.     }
  187. }
  188.  
  189.  
  190. template <typename tip>
  191. void niz<tip>::obrisi ()
  192. {
  193.     if (br_el == 0) throw "Prazno!";
  194.     for (int i(tekuci-1); i<br_el; i++) elementi[i]=elementi[i+1];
  195.     delete elementi[--br_el];
  196.     if (tekuci!=1) tekuci--;
  197. }
  198.  
  199.  
  200. template <typename tip>
  201. tip niz<tip>::operator[] (int n) const
  202. {
  203.     if (n<0 || n >= br_el ) throw "Nepostojeci clan!";
  204.     return *elementi[n];
  205. }
  206.  
  207.  
  208. template <typename tip>
  209. tip niz<tip>::operator[] (int n)
  210. {
  211.     if (n<0 || n >= br_el ) throw "Nepostojeci clan!";
  212.     return *elementi[n];
  213. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top