Help with C++ homework

profiledzaiki

Stack object data structures do not contain code to throw an exception when a stack.pop() function is called on an empty stack. This is due to the fact that it is easy to establish this exception handing elsewhere. Create a class named SafeStack that implements a stack of strings. 

  • Use an instance of stack from <string> to hold string values and implement the same interface as the data type. However, your implementation (class) should throw an exception if an attempt is made to remove a value from an empty stack.
  • See Chapter 17 of the book for how to complete this assignment.

TEXT is BIG C++ 

 

free pdf.

 

https://vk.com/doc-38203920_235034518

 

I am having issues getting code to compile. Need HELP ASAP 

 

// File: SafeStack.h
#ifndef SAFESTACK_H
#define SAFESTACK_H

// Header files section
#include <stack>
#include <string>
#include <exception>
#include <stdexcept>
#include <iostream>
#include <sstream>
using namespace std;

// definition of the EmptyStackException class
class EmptyStackException : public exception
{
public:
   EmptyStackException();
  
};

// definition of the SafeStack class
class SafeStack
{
public:
   SafeStack();
   void push(string str);
   string top() throw (EmptyStackException);
   void pop() throw (EmptyStackException);
   int size();
   bool empty();

private:
   stack<string> stk;
};
#endif

-------------------------------------------------------------------

// File: SafeStack.cpp
#include "SafeStack.h"

// constructor of the EmptyStackException class
EmptyStackException::EmptyStackException() : exception("Stack is empty!")
{
}

// constructor of the SafeStack class
SafeStack::SafeStack()
{}

// push function implementation
void SafeStack::push(string str)
{
   stk.push(str);
   cout << "One element is inserted in the stack." << endl;
} // end of push function

// top function implementation
string SafeStack::top() throw (EmptyStackException)
{
   // throw the EmptyStackException if the stack is empty
   if(stk.empty())
       throw EmptyStackException();

   return stk.top();
} // end of top function

// pop function implementation
void SafeStack::pop() throw (EmptyStackException)
{
   // throw the EmptyStackException if the stack is empty
   if(stk.empty())
       throw EmptyStackException();

   stk.pop();
} // end of pop function

// size function implementation
int SafeStack::size()
{
   return stk.size();
} // end of size function

// empty function implementation
bool SafeStack::empty()
{
   return stk.empty();
} // end of empty function

--------------------------------------------------------------------

// File: Test.cpp
#include "SafeStack.h"

// start main function
int main()
{
   // create an object for the SafeStack class
   SafeStack ss;

   cout << "The number of elements in the stack: " << ss.size() << endl;

   // try/catch for the top() function
   try
   {
       cout << "The top element in the stack: " << ss.top() << endl;
   }
   catch(exception& ex)
   {
       cout << "Caught exception for top(): " << ex.what() << endl;
   }

   ss.push("John");
   ss.push("Smith");
   cout << "\nThe number of elements in the stack: " << ss.size() << endl;

   // try/catch for the top() function
   try
   {
       cout << "The top element in the stack: " << ss.top() << endl;
   }
   catch(exception &ex)
   {
       cout << "Caught exception for top(): " << ex.what() << endl;
   }

   cout << "\nThe number of elements in the stack: " << ss.size() << endl;

   // try/catch for the pop() function
   try
   {
       ss.pop();
       cout << "One element is removed from the stack." << endl;
   }
   catch(exception &ex)
   {
       cout << "Caught exception for pop(): " << ex.what() << endl;
   }

   // try/catch for the top() function
   try
   {
       cout << "The top element in the stack: " << ss.top() << endl;
   }
   catch(exception &ex)
   {
       cout << "Caught exception for top(): " << ex.what() << endl;
   }

   cout << "\nThe number of elements in the stack: " << ss.size() << endl;

   // try/catch for the pop() function
   try
   {
       ss.pop();
       cout << "One element is removed from the stack." << endl;
   }
   catch(exception &ex)
   {
       cout << "Caught exception for pop(): " << ex.what() << endl;
   }

   // try/catch for the top() function
   try
   {
       cout << "The top element in the stack: " << ss.top() << endl;
   }
   catch(exception ex)
   {
       cout << "Caught exception for top(): " << ex.what() << endl;
   }

   cout << "\nThe number of elements in the stack: " << ss.size() << endl;

   // try/catch for the pop() function
   try
   {
       ss.pop();
       cout << "One element is removed from the stack." << endl;
   }
   catch(exception &ex)
   {
       cout << "Caught exception for pop(): " << ex.what() << endl;
   }

   cout << endl;
   system("pause"); // for Visual Studio
   return 0;
} // end of main function

    • 10 years ago
    • 10
    Answer(2)

    Purchase the answer to view it

    blurred-text
    • attachment
      1.zip
    • attachment
      2.zip

    Purchase the answer to view it

    blurred-text
    NOT RATED
    • attachment
      downloads.zip