Dynamic MathStack The MathStack class shown in this chapter only has two member
ID: 3819265 • 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
Following is the definition of member functions.
void MathStack:: add() {
int val1= 0;
int val2=0;
pop(val1);
pop(val2);
int result = 0;
result = val1 + val2;
push(result);
}
void MathStack:: sub(){
int val1= 0;
int val2=0;
pop(val1);
pop(val2);
int result = 0;
result = val1 - val2;
push(result);
}
void MathStack:: mult() {
int val1= 0;
int val2= 0;
pop(val1);
pop(val2);
int result = 0;
result = val1 * val2;
push(result);
}
void MathStack:: divison() {
int val1= 0;
int val2=0;
pop(val1);
pop(val2);
int result = 0;
if (val2 != 0) {
result = val1 / val2;
push(result);
}
}
void MathStack:: addAll() {
int result = 0;
int val;
while (!isEmpty()) {
pop(val);
result = result + val;
}
push(result);
}
void MathStack:: multAll() {
int result = 1;
int val;
while (!isEmpty()) {
pop(val);
result = result * val;
}
push(result);
}
Following is the main program to test MathStack class.
#include <iostream>
#include <MathStack.h>
using namespace std;
int main()
{
MathStack s(20);
for(int i=0;i<2;i++)
s.push(10);
int val;
s.add();
s.pop(val);
cout<<" result of addition:"<<val;
for(int i=0;i<2;i++)
s.push(10);
s.sub();
s.pop(val);
cout<<" result of subtraction:"<<val;
for(int i=0;i<2;i++)
s.push(10);
s.mult();
s.pop(val);
cout<<" result of multiplication:"<<val;
for(int i=0;i<2;i++)
s.push(10);
s.divison();
s.pop(val);
cout<<" result of divison:"<<val;
for(int i=0;i<5;i++)
s.push(10);
s.addAll();
s.pop(val);
cout<<" result of addAll:"<<val;
for(int i=0;i<5;i++)
s.push(10);
s.multAll();
s.pop(val);
cout<<" result of multAll:"<<val;
return 0;
}
Please let me know in case of any doubts.
Thanks
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.