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;
}
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.