Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*Proširi drugi zadatak iz vježbe br. 3 (predložak klase stog) tako da se podigne
- iznimka StogExc izvedena iz osnovne klase exception u slučaju da se pokuša
- umetnuti element na pun stog ili skinuti element sa praznog stoga. Napisati
- odgovarajuću main funkciju, koja će sadržavati blokove pokušaja i hvatanja*/
- #include<iostream>
- #include<string>
- using namespace std;
- class StogExc : public exception
- {
- private:
- char *msg;
- public:
- StogExc(char *text) : msg(text) {};
- virtual const char* what() const throw() {
- return msg;
- }
- };
- class StogPrazan : public StogExc {
- public:
- StogPrazan() : StogExc("Stog je prazan!") {};
- };
- class StogPun : public StogExc {
- public:
- StogPun() : StogExc("Stog je pun!") {};
- };
- template <class Tip>
- class Stack {
- private:
- Tip *array;
- int sp;
- int broj_elemenata;
- public:
- Stack(int n) {
- sp = 0;
- broj_elemenata = n;
- array = new Tip[broj_elemenata];
- }
- Stack(const Stack& ref)
- {
- broj_elemenata = ref.broj_elemenata;
- array = new int[broj_elemenata];
- for (int i = 0; i<broj_elemenata; i++)
- {
- array[i] = ref.array[i];
- }
- }
- ~Stack() {
- delete[] array;
- }
- Stack& operator= (const Stack& ref)
- {
- if (this != &ref)
- {
- broj_elemenata = ref.broj_elemenata;
- array = new int[broj_elemenata];
- for (int i = 0; i < broj_elemenata; i++)
- {
- array[i] = ref.array[i];
- }
- }
- return *this;
- }
- void push(Tip x) {
- if (sp == broj_elemenata)
- throw StogPun();
- array[sp++] = x;
- }
- Tip pop() {
- if (sp == 0)
- throw StogPrazan();
- return array[--sp];
- }
- };
- int main()
- {
- int n;
- double x;
- cout << "Unesi broj elemenata stoga: ";
- cin >> n;
- try {
- Stack<double> s1(n);
- for (int i = 0; i < n; i++) {
- cout << i << ". element: ";
- cin >> x;
- s1.push(x);
- }
- s1.push(12);
- s1.pop();
- s1.pop();
- s1.pop();
- }
- catch (StogPrazan &iznimka) {
- cout << iznimka.what() << endl;
- }
- catch (StogPun &iznimka) {
- cout << iznimka.what() << endl;
- }
- catch (exception &StogExc) {
- cout << StogExc.what() << endl;
- }
- catch (...) {
- cout << "Error!" << endl;
- }
- system("pause");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement