Thread: Postfix Calculator Using Stack, Linked Lists

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Registered User
    Join Date
    Oct 2008
    Posts
    36
    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 = ' ';                                     //just so that the while loop runs
      node *utility, *top;
    
      utility = new node;
      utility -> number = 0;
      utility -> next = NULL;
      top = new node;
      top -> number = 0;
      top -> next = utility;
    
      cout << "Postfix Calculator\n\n"
           << "Enter a legal positive integer postfix operation.\n\n";
     while(ch != '\n')
        {
            cin >> noskipws >> ch;
            int operand = 0;
            while(ch == ' ')
              cin >> ch;
            if((ch >= '0')&&(ch <= '9')){
              while(ch != ' '){
                operand = operand*10 + (ch-48);
                cin >> ch;}
              top = push(top, operand);}
            else{
              pop(top, operand1);
              pop(top, operand2);
              switch(ch){
                case '+': answer = operand2 + operand1;
                case '-': answer = operand2 - operand1;
                case '*': answer = operand2 * operand1;
                case '/': answer = operand2 / operand1;}
              push(top, answer);}
        }
      pop(top, answer);
      cout << "\nAnswer: " << answer << endl;
    }
    This is where I am now and the problem still hasn't righted itself... it doesn't recognize the new-line character at all.

    EDIT: Never mind, the program gives me an answer... except it's not the right one. 2 3 45 + + gives me 90 instead of 50. Hmm...
    Last edited by Velocity; 12-05-2008 at 08:52 AM.

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. stack and pointer problem
    By ramaadhitia in forum C Programming
    Replies: 2
    Last Post: 09-11-2006, 11:41 PM
  2. Replies: 4
    Last Post: 03-12-2006, 02:17 PM
  3. Linked Lists 101
    By The Brain in forum C++ Programming
    Replies: 5
    Last Post: 07-24-2004, 04:32 PM
  4. error trying to compile stack program
    By KristTlove in forum C++ Programming
    Replies: 2
    Last Post: 11-03-2003, 06:27 PM
  5. need help w/ linked lists
    By MKashlev in forum C++ Programming
    Replies: 11
    Last Post: 08-05-2002, 08:57 PM