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; } } }



LinkBack URL
About LinkBacks


