Guest User

Untitled

a guest
Apr 21st, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <memory>
  4.  
  5. using namespace std;
  6.  
  7. #if !defined( _RIESENIE_H_ )
  8. #define _RIESENIE_H_
  9.  
  10. bool DUMMY_BOOL = true;
  11. int DUMMY_INT = 0;
  12. string DUMMY_STRING = "";
  13.  
  14. //1.uloha
  15. template<typename T> class POLE {
  16.     void deleteClenov();
  17.     void vlozPrazdnyElement();
  18.     string chyba;
  19. /* TODO zabezpecit, aby boli premenne dostupne pre triedu MNOZINA*/
  20.     int pocet;
  21.     T *clen;
  22.   public:
  23.     POLE();
  24.     ~POLE();
  25.     const int velkost() const {return pocet;};
  26.     /* TODO ...*/ bool vloz(const T &vstup);
  27.     void vyprazdni();
  28.     const string obsah(char delimiter);
  29. //2.uloha
  30.     const string vratPoslednuChybu() { return chyba; };
  31.     POLE(const POLE<T> &vstup);
  32.     T & operator[](const int i);
  33. //3.uloha
  34.     bool odober(const int i);
  35.     bool vyhod(const T &vstup);
  36.     void operator+=(const POLE<T> &);
  37. };
  38. template<typename T> class MNOZINA: public POLE<T> {
  39.   public:
  40. //4.uloha
  41.     MNOZINA() {};
  42.     bool nachadzaSa(const T &vstup);
  43.     bool vloz(const T &vstup);
  44. //5.uloha
  45.     MNOZINA(const MNOZINA<T> &vstup);
  46.     bool zrus(const T &vstup);
  47.     void operator+=(const MNOZINA<T> &vstup);
  48. };
  49. template<typename T> POLE<T>::POLE() : chyba(""), pocet(0), clen(NULL) {
  50. };
  51. template<typename T> POLE<T>::POLE(const POLE<T> &vstup)
  52.   : chyba(""), pocet(0), clen(NULL) {
  53.   /* TODO
  54.    * Ak je vstupne pole neprazdne, alokujte
  55.    * clen na rovnaky pocet prvkov a skopirujte vstupne pole.
  56.    */
  57.     //if (vstup.clen != NULL) {
  58.     if (vstup.velkost() != 0) {
  59.         clen = new T[vstup.velkost()];
  60.         for (int i=0; i<vstup.velkost(); i++) {
  61.             *(clen+i) = vstup.clen[i];
  62.         }
  63.         pocet = vstup.velkost();
  64.     }
  65. }
  66. template<typename T> void POLE<T>::deleteClenov(){
  67.   /* TODO
  68.    * Ak clen nie je NULL,
  69.    * delete [] vsetkych clenov pola a nastavte clen na NULL
  70.    */
  71.     if (clen != NULL ) {
  72.         delete[] clen;
  73.         clen = NULL;
  74.     }
  75. }
  76. template<typename T> POLE<T>::~POLE() {
  77.   /* TODO
  78.    * Zruste vsetkych clenov pola pomocou metody deleteClenov()
  79.    */
  80.     deleteClenov();
  81. }
  82. template<typename T> const string POLE<T>::obsah(char delimiter) {
  83.   ostringstream ost;
  84.   /* TODO
  85.    * Do vystupneho prudu ost vloz vsetky prvky pola,
  86.    * oddelene oddelovacom delimiter.
  87.    * Vrat stringovu hodnotu ost.
  88.    */
  89.   if (clen == NULL) {
  90.   //if (this->velkost() == 0) {
  91.       cout<< "AHOJ" << endl;
  92.       return "";
  93.   }
  94.   ost << clen[0];
  95.   cout << velkost() << endl;
  96.   for (int i=1; i<this->velkost(); i++) {
  97.       ost << delimiter;
  98.       ost << clen[i];
  99.   }
  100.  
  101.   return ost.str();
  102. }
  103. template<typename T> bool POLE<T>::vloz(const T &vstup) {
  104.   /* TODO
  105.    * Vytvor pole smernikov temp a alokuj mu
  106.    * o jeden prvok viac, ako doteraz.
  107.    *   T *temp = new T[... + 1];
  108.    * Skopiruj vsetky prvky clen do temp.
  109.    * Na posledne miesto vloz vstup.
  110.    *  *(temp + ...) = ...;
  111.    * Zvys pocet prvkov v poli.
  112.    * Delete cele pole clen a skopiruj do neho temp.
  113.    */
  114.     T *temp = new T[this->velkost() + 1];
  115.     //cout << "velkost:" << velkost() << endl;
  116.     if (clen != NULL) {
  117.         for (int i=0; i<this->velkost(); i++) {
  118.             //cout << "velkost:" << velkost() << endl;
  119.             *(temp+i) = clen[i];
  120.         }
  121.     }
  122.     //cout << "JJ" << endl;
  123.     *(temp+this->velkost()) = vstup;
  124.     this->pocet++;
  125.     deleteClenov();
  126.     T *clen = new T[this->velkost()];
  127.     for (int i=0; i<this->velkost(); i++) {
  128.         *(clen+i) = temp[i];
  129.     }
  130.   return true;
  131. }
  132. template<typename T> void POLE<T>::vyprazdni() {
  133.   /* TODO
  134.    * Vyhod vsetkych clenov a uprav pocet na 0.
  135.    */
  136.     deleteClenov();
  137.     //clen = NULL;
  138.     pocet = 0;
  139. }
Add Comment
Please, Sign In to add comment