Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Dynamic MathStack The MathStack class shown in this chapter only has two member

ID: 3819235 • Letter: D

Question

Dynamic MathStack

The MathStack class shown in this chapter only has two member functions: add and

sub . Write the following additional member functions:

Function Description

mult - Pops the top two values off the stack, multiplies them, and pushes

their product onto the stack.

div - Pops the top two values off the stack, divides the second value by

the first, and pushes the quotient onto the stack.

addAll - Pops all values off the stack, adds them, and pushes their sum

onto the stack.

multAll -Pops all values off the stack, multiplies them, and pushes their

product onto the stack.

Demonstrate the class with a driver program.

Using these header files

IntStack.h

// Specification file for the IntStack class
#ifndef INTSTACK_H
#define INTSTACK_H

class IntStack
{
protected:
   int *stackArray;
   int stackSize;
   int top;

public:
   IntStack(int);
   ~IntStack();
   void push(int);
   void pop(int &);
   bool isFull();
   bool isEmpty();
};
  
#endif

and

MathStack.h

// Specification file for the MathStack class
#ifndef MATHSTACK_H
#define MATHSTACK_H

#include "IntStack.h"

class MathStack : public IntStack
{
public:
   MathStack(int s) : IntStack(s) {}
   void add();
   void sub();
   void mult();
   void div();
   void addAll();
   void multAll();
};

#endif

In C++

Explanation / Answer

void MathStack::addAll()
{
int num = 0, sum = 0;

while(!isEmpty())
{
pop(num);
sum += num;
}

push(sum);
}

void MathStack::multAll()
{
int num = 0, res = 1;

while(!isEmpty())
{
pop(num);
res *= num;
}

push(res);
}
void MathStack::div()
{
int num = 0,num2 = 0;
float res = 0;

while(!isEmpty())
{
//Pop the first two values off the stack.
pop(num);
cout << "Popping " << num << " ";
pop(num2);
cout << "Popping " << num2 << " ";

//Divide the two values, store in res.
res = num / num2;
cout << "Result of division is " << res;
//Push result back onto the stack.
push(res);
num =0;
num2 = 0;
}


}

void MathStack::mult()
{
int num = 0,num2 = 0;
float res = 0;

while(!isEmpty())
{
//Pop the first two values off the stack.
pop(num);
cout << "Popping " << num << " ";
pop(num2);
cout << "Popping " << num2 << " ";

//Divide the two values, store in res.
res = num * num2;
cout << "Result of multiplication is " << res;
//Push result back onto the stack.
push(res);
num =0;
num2 = 0;
}


}