Note that there are some explanatory texts on larger screens.

plurals
  1. POAdd every value in stack
    text
    copied!<p>I am trying to figure out a method that will add every value in a stack.</p> <p>The goal is to use that value to determine if all the values in the stack are even. I have written to code to do this</p> <pre><code>template &lt;class Object&gt; bool Stack&lt;Object&gt;::objectIsEven( Object value ) const { bool answer = false; if (value % 2 == 0) answer = true; return( answer ); } </code></pre> <p>However, I am stumped on how to add all of the stack's values in a separate method</p> <p>Stack.cpp</p> <pre><code>#ifndef STACK_CPP #define STACK_CPP #include "Stack.h" namespace cs20 { template &lt;class Object&gt; Stack&lt;Object&gt;::Stack() { topNode = NULL; } template &lt;class Object&gt; Stack&lt;Object&gt;::Stack( const Stack&lt;Object&gt;&amp; rhs ) { topNode = NULL; *this = rhs; } template &lt;class Object&gt; Stack&lt;Object&gt;::~Stack() { makeEmpty(); delete topNode; } template &lt;class Object&gt; bool Stack&lt;Object&gt;::isEmpty() const { return( (topNode == NULL) ); } template &lt;class Object&gt; bool Stack&lt;Object&gt;::even() const { } // template Object must support the % operator which ints do template &lt;class Object&gt; bool Stack&lt;Object&gt;::objectIsEven( Object value ) const { bool answer = false; if (value % 2 == 0) answer = true; return( answer ); } template &lt;class Object&gt; void Stack&lt;Object&gt;::makeEmpty() { while (!isEmpty()) { pop(); } } template &lt;class Object&gt; void Stack&lt;Object&gt;::push( const Object&amp; data ) { StackNode&lt;Object&gt;* newNode = new StackNode&lt;Object&gt;( data, topNode ); topNode = newNode; } template &lt;class Object&gt; void Stack&lt;Object&gt;::pop() { if (isEmpty()) { throw EmptyStack(); } StackNode&lt;Object&gt; *oldTop = topNode; topNode = topNode-&gt;getNext(); delete oldTop; } template &lt;class Object&gt; const Object&amp; Stack&lt;Object&gt;::top( ) const { if (isEmpty()) { throw EmptyStack(); } StackNode&lt;Object&gt; node = *topNode; return( node.getElement() ); } template &lt;class Object&gt; Object Stack&lt;Object&gt;::topAndPop( ) { Object o = top(); pop(); return( o ); } // Deep copy of linked Stack template &lt;class Object&gt; const Stack&lt;Object&gt;&amp; Stack&lt;Object&gt;::operator =( const Stack&lt;Object&gt;&amp; rhs ) { if (this != &amp;rhs) { makeEmpty(); if (!(rhs.isEmpty())) { StackNode&lt;Object&gt; * rhsTopNode = rhs.topNode; StackNode&lt;Object&gt; * myTopNode = new StackNode&lt;Object&gt;( rhsTopNode-&gt;getElement() ); topNode = myTopNode; rhsTopNode = rhsTopNode-&gt;getNext(); while (rhsTopNode != NULL) { myTopNode-&gt;setNext( new StackNode&lt;Object&gt;( rhsTopNode-&gt;getElement() ) ); myTopNode = myTopNode-&gt;getNext(); rhsTopNode = rhsTopNode-&gt;getNext(); } } } return( *this ); } template &lt;class Object&gt; std::ostream&amp; Stack&lt;Object&gt;::printStack( std::ostream&amp; outs ) const { if (isEmpty()) { outs &lt;&lt; "Empty Stack"; } else { outs &lt;&lt; "TOP: "; StackNode&lt;Object&gt; * node = topNode; while (node != NULL) { outs &lt;&lt; node-&gt;getElement(); outs &lt;&lt; "\n "; /// for visual alignment node = node-&gt;getNext(); } } return( outs ); } } #endif </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload