Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- #include <memory>
- using namespace std;
- #if !defined( _RIESENIE_H_ )
- #define _RIESENIE_H_
- bool DUMMY_BOOL = true;
- int DUMMY_INT = 0;
- string DUMMY_STRING = "";
- //1.uloha
- template<typename T> class POLE {
- void deleteClenov();
- void vlozPrazdnyElement();
- string chyba;
- /* TODO zabezpecit, aby boli premenne dostupne pre triedu MNOZINA*/
- int pocet;
- T *clen;
- public:
- POLE();
- ~POLE();
- const int velkost() const {return pocet;};
- /* TODO ...*/ bool vloz(const T &vstup);
- void vyprazdni();
- const string obsah(char delimiter);
- //2.uloha
- const string vratPoslednuChybu() { return chyba; };
- POLE(const POLE<T> &vstup);
- T & operator[](const int i);
- //3.uloha
- bool odober(const int i);
- bool vyhod(const T &vstup);
- void operator+=(const POLE<T> &);
- };
- template<typename T> class MNOZINA: public POLE<T> {
- public:
- //4.uloha
- MNOZINA() {};
- bool nachadzaSa(const T &vstup);
- bool vloz(const T &vstup);
- //5.uloha
- MNOZINA(const MNOZINA<T> &vstup);
- bool zrus(const T &vstup);
- void operator+=(const MNOZINA<T> &vstup);
- };
- template<typename T> POLE<T>::POLE() : chyba(""), pocet(0), clen(NULL) {
- };
- template<typename T> POLE<T>::POLE(const POLE<T> &vstup)
- : chyba(""), pocet(0), clen(NULL) {
- /* TODO
- * Ak je vstupne pole neprazdne, alokujte
- * clen na rovnaky pocet prvkov a skopirujte vstupne pole.
- */
- //if (vstup.clen != NULL) {
- if (vstup.velkost() != 0) {
- clen = new T[vstup.velkost()];
- for (int i=0; i<vstup.velkost(); i++) {
- *(clen+i) = vstup.clen[i];
- }
- pocet = vstup.velkost();
- }
- }
- template<typename T> void POLE<T>::deleteClenov(){
- /* TODO
- * Ak clen nie je NULL,
- * delete [] vsetkych clenov pola a nastavte clen na NULL
- */
- if (clen != NULL ) {
- delete[] clen;
- clen = NULL;
- }
- }
- template<typename T> POLE<T>::~POLE() {
- /* TODO
- * Zruste vsetkych clenov pola pomocou metody deleteClenov()
- */
- deleteClenov();
- }
- template<typename T> const string POLE<T>::obsah(char delimiter) {
- ostringstream ost;
- /* TODO
- * Do vystupneho prudu ost vloz vsetky prvky pola,
- * oddelene oddelovacom delimiter.
- * Vrat stringovu hodnotu ost.
- */
- if (clen == NULL) {
- //if (this->velkost() == 0) {
- cout<< "AHOJ" << endl;
- return "";
- }
- ost << clen[0];
- cout << velkost() << endl;
- for (int i=1; i<this->velkost(); i++) {
- ost << delimiter;
- ost << clen[i];
- }
- return ost.str();
- }
- template<typename T> bool POLE<T>::vloz(const T &vstup) {
- /* TODO
- * Vytvor pole smernikov temp a alokuj mu
- * o jeden prvok viac, ako doteraz.
- * T *temp = new T[... + 1];
- * Skopiruj vsetky prvky clen do temp.
- * Na posledne miesto vloz vstup.
- * *(temp + ...) = ...;
- * Zvys pocet prvkov v poli.
- * Delete cele pole clen a skopiruj do neho temp.
- */
- T *temp = new T[this->velkost() + 1];
- //cout << "velkost:" << velkost() << endl;
- if (clen != NULL) {
- for (int i=0; i<this->velkost(); i++) {
- //cout << "velkost:" << velkost() << endl;
- *(temp+i) = clen[i];
- }
- }
- //cout << "JJ" << endl;
- *(temp+this->velkost()) = vstup;
- this->pocet++;
- deleteClenov();
- T *clen = new T[this->velkost()];
- for (int i=0; i<this->velkost(); i++) {
- *(clen+i) = temp[i];
- }
- return true;
- }
- template<typename T> void POLE<T>::vyprazdni() {
- /* TODO
- * Vyhod vsetkych clenov a uprav pocet na 0.
- */
- deleteClenov();
- //clen = NULL;
- pocet = 0;
- }
Add Comment
Please, Sign In to add comment