postfix evaluation

Discussion in 'C Programming' started by maha_khaled, Apr 19, 2012.

  1. maha_khaled

    maha_khaled

    Joined:
    Apr 19, 2012
    Messages:
    1
    Location:
    Egypt
    Hi, i'am trying to read postfix expression from txt file and evaluate it
    the input is 10 5 * ,the output should be 50, but it reads only 10 and 5,the problem he can't read operators neither their ascii ,any help?
    here's my code
    PHP:
    #include <iostream> #include <iomanip> #include <fstream> #include<stdio.h> #include<ctype.h> #include<stdlib.h> using namespace std; #define SIZE 40 int stack[SIZE]; int top=-1; void push(int n) { if(top==SIZE-1) { printf("Stack is full\n");  system("pause"); return; } else { top=top+1; stack[top]=n; printf("Pushed element is %d\n",n);  system("pause"); } } int pop() { int n; if(top==-1) { printf("Stack is empty\n");  system("pause"); return 0; } else { n=stack[top]; top=top-1; return(n); } } int main() { int str[50],ch; int i=0; int n,op1,op2; ifstream inFile; ch=str[i]; inFile.open("D:\\me.txt"); if (!inFile) { printf( "Unable to open file"); system("pause"); exit(1); // terminate with error } while (inFile >> ch) { if(ch==43 || ch==45 || ch==47 || ch==42 || ch==94 || ch==37 ) {     op1=pop();     op2=pop();     if (op1<op2)     {     n=op1;     op1=op2;     op2=n;     }     switch(ch)     {     case 43:     n=op1+op2; break;     case 45:     n=op1-op2;break;     case 42:     n=op1*op2;break;     case 47:     n=op1/op2;break;     case 37:     n=op1%op2;break;     case 94:     n=op1^op2;break;          default:     {     printf("The operator is not identified\n");     system("pause");     exit(0);break;     }     }     printf("n=%d\n",n);     push(n);     system("pause"); }     else     {     n=ch;     push(n);     } ch=str[++i]; }inFile.close(); printf("The value of the arithmetic expression is=%d\n",pop()); system("pause"); return 0; }
     
    maha_khaled, Apr 19, 2012
    #1
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. KidLogik
    Replies:
    5
    Views:
    7,052
    David Rubin
    Feb 3, 2004
  2. Goran Sliskovic
    Replies:
    2
    Views:
    349
    Goran Sliskovic
    May 15, 2004
  3. Ilias Lazaridis
    Replies:
    2
    Views:
    395
    Ilias Lazaridis
    Apr 24, 2005
  4. Ilias Lazaridis
    Replies:
    74
    Views:
    768
    Ilias Lazaridis
    Apr 4, 2005
  5. Ilias Lazaridis
    Replies:
    18
    Views:
    350
    Bill Guindon
    Apr 9, 2005
Loading...

Share This Page