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. Advertisements

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,142
    David Rubin
    Feb 3, 2004
  2. Goran Sliskovic
    Replies:
    2
    Views:
    372
    Goran Sliskovic
    May 15, 2004
  3. Ilias Lazaridis
    Replies:
    2
    Views:
    430
    Ilias Lazaridis
    Apr 24, 2005
  4. Ilias Lazaridis
    Replies:
    74
    Views:
    876
    Ilias Lazaridis
    Apr 4, 2005
  5. Ilias Lazaridis
    Replies:
    18
    Views:
    410
    Bill Guindon
    Apr 9, 2005
Loading...

Share This Page