1. ## 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()
{
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;
}