beautypg.com

HP Integrity NonStop H-Series User Manual

Page 113

background image

int left = data.top(); // read next top element
data.pop(); // pop it from stack
switch (theOp) {
case plus: data.push(left + right); break;
case minus: data.push(left - right); break;
case times: data.push(left * right); break;
case divide: data.push(left / right); break;
}
}

The main program reads values in reverse polish notation, invoking the calculator engine to do the
actual work:

void main() {
int intval;
calculatorEngine calc;
char c;

while (cin >> c)
switch (c) {
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
cin.putback(c);
cin >> intval;
calc.pushOperand(intval);
break;

case '+': calc.doOperator(calculatorEngine::plus);
break;

case '-': calc.doOperator(calculatorEngine::minus);
break;

case '*': calc.doOperator(calculatorEngine::times);
break;

case '/': calc.doOperator(calculatorEngine::divide);
break;

case 'p': cout << calc.currentMemory() << endl;
break;

case 'q': return; // quit program
}
}

This manual is related to the following products: