# Stack Postfix Calculator

Printable View

• 03-09-2012
programminfool
Stack Postfix Calculator
Can anybody tell me what's wrong with this? I get an answer but its wrong. For example 23+ gives me 225.

Code:

```#include <iostream> #include <iomanip> using namespace std;   class node {   public:     float number;     node *next; };   node* push(node *stack, float data) {   node *utility;   utility = new node;   utility -> number = data;   utility -> next = stack;   return utility; }   node* pop(node *stack, float &data) {   node *temp;   if (stack != NULL)   {     temp = stack;     data = stack -> number;     stack = stack -> next;     delete temp;   }   else cout << "\nERROR: Empty stack.\n";   return stack; }   int main() {   float answer, operand1, operand2;   char ch = ' ';                                      node *utility, *top;     utility = new node;   utility -> number = 0;   utility -> next = NULL;   top = new node;   top -> number = 0;   top -> next = utility;   while(ch != 'q')   {  cout << "calc> ";  cin >> noskipws >> ch;         if(ch == 'q')         {                 return 0;         }  while(ch != '\n')  {                           float operand = 0;         if((ch >= '0')&&(ch <= '9'))                 {           while(ch != '\n')                   {             operand = operand*10 + (ch-48);                                       cin >> ch;                   }           top = push(top, operand);                 }         else                 {                         if((ch == '+')||(ch == '-')||(ch == '*')||(ch == '/')){           top = pop(top, operand1);           top = pop(top, operand2);           switch(ch){             case '+': answer = operand2 + operand1;                                 break;             case '-': answer = operand2 - operand1;                                 break;             case '*': answer = operand2 * operand1;                                 break;             case '/': answer = operand2 / operand1;                                 break;                   }                   top = push(top, answer);}                         else {                                 cout << "Error! Wrong Character Entered";                         }                 }                 pop(top, answer);   cout << "\nAnswer: " << answer << endl;   }   } }```
• 03-09-2012
manasij7479