Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- using namespace std;
- class Item
- {
- string name;
- public:
- Item() {}
- Item(string name) { this->name = name; }
- };
- class Stack
- {
- protected:
- virtual void push(Item* obj) = 0;
- virtual void pop() = 0;
- virtual Item* get() = 0;
- };
- class ArrayStack : public Stack
- {
- int maxsize; // rozmiar stosu
- int size; // wskaznik stosu
- Item* tab;
- public:
- ArrayStack(int maxsize)
- {
- if(maxsize < 0 )
- {
- // jak ujemna wartosc rozmiaru stosu
- throw "WrongSizeException";
- }
- size = 0;
- this->maxsize = maxsize;
- tab = new Item[maxsize];
- }
- ~ArrayStack()
- {
- delete[] tab;
- };
- virtual void push(Item* obj) // umieszcza el na stosie
- {
- if(size == maxsize)
- {
- // jak przeplniamy stos
- throw "StackFullException";
- }
- else
- {
- tab[size] = *obj;
- size++;
- }
- }
- virtual void pop() // uswawa element ze stosu
- {
- if(size == 0)
- {
- // jka juz nie ma co usunac
- throw "StackEmptyException";
- }
- else
- {
- size--;
- }
- }
- virtual Item* get() // zwraca el ze stosu
- {
- if(size == 0)
- {
- // jak bieremy elementa ale go ni ma
- throw "StackEmptyException";
- }
- else
- {
- return &tab[size];
- }
- }
- };
- /*
- class DynamicArrayStack : public Stack
- {
- int maxsize, size;
- Item* tab;
- public:
- DynamicArrayStack(int starting_size = 0)
- {
- starting_size = maxsize;
- if(starting_size<0)
- {
- throw "WrongSizeException";
- }
- size = 0;
- tab = new Item[starting_size];
- }
- virtual void push(Item* obj) // umieszcza el na stosie
- {
- if(size == maxsize)
- {
- Item *temp = tab;
- tab = new Item[maxsize*2];
- maxsize = maxsize*2;
- for(int i=0; i<maxsize/2; i++)
- {
- tab[i] = temp[i];
- }
- tab[size] = *obj;
- size++;
- }
- else
- {
- tab[size] = *obj;
- size++;
- }
- }
- virtual void pop() // uswa el ze stosu
- {
- if(size == 0)
- {
- throw "StackEmptyException";
- }
- else
- {
- size--;
- }
- }
- virtual Item* get() // zwraca el ze stosu
- {
- if(size == 0)
- {
- throw "StackEmptyException";
- }
- else
- {
- return &tab[size];
- }
- }
- };
- */
- int main()
- {
- Item Haranas("Zle piwo");
- Item Zywiec("Dobre piwo");
- Item Zubr("Srednie piwo");
- Item Piast("Lokalne piwo");
- Item Heineken("Piwo jasne");
- Item Tyskie("Mocne piwo");
- try
- {
- // ArrayStack Stos(-1);
- // ArrayStack Stos(1);
- ArrayStack Stos(5);
- Stos.push(&Haranas);
- Stos.push(&Zywiec);
- Stos.push(&Zubr);
- Stos.push(&Piast);
- Stos.push(&Tyskie);
- Stos.pop();
- Stos.pop();
- Stos.pop();
- Stos.pop();
- Stos.pop();
- Stos.pop();
- Stos.pop();
- }
- catch(const char* e)
- {
- cout << e << endl; // wyrzuca odopowieni wyjatek
- }
- char chuj;
- cin >> chuj;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement