#include 
#include 
#include 
void push(char [], int *, char [], int *);
char pop(char [], int *);
void push1(char, int *, char [], int *);
void main()
{
 int i=0,top=-1,k=1,j,n;
 char str[30],stack[20],lhs,rhs,ch;
 clrscr();
 printf("Enter the postfix expression: ");
 scanf("%[^\n]s",str);
 j = strlen(str);
 str[j] = '#';
 while(str[i] != '#')
 {
  if(isalpha(str[i]))
   push(str,&i,stack,&top);
  else
  {
   rhs = pop(stack,&top);
   lhs = pop(stack,&top);
   j = lhs;
   n = rhs;
   if(j >= 0 && j <= 9)
    printf("LOD T%d\n",lhs);
   else
    printf("LOD %c\n",lhs);
   if(n >= 0 && n <= 9)
   {
    switch(str[i])
    {
                                 case '+':
      printf("ADD T%d\n",rhs);
      break;
     case '-':
      printf("SUB T%d\n",rhs);
      break;
     case '*':
      printf("MUL T%d\n",rhs);
      break;
     case '/':
      printf("DIV T%d\n",rhs);
      break;
    }
   }
   else
   {
    switch(str[i])
    {
     case '+':
      printf("ADD %c\n",rhs);
      break;
     case '-':
      printf("SUB %c\n",rhs);
      break;
     case '*':
      printf("MUL %c\n",rhs);
      break;
     case '/':
      printf("DIV %c\n",rhs);
      break;
    }
   }
   ch = (char)k++;
   printf("STO T%d\n",ch);
   push1(ch,&i,stack,&top);
  }
 }
 getch();
}
void push(char str[], int *i, char stack[], int *top)
{
 (*top)++;
 stack[*top] = str[(*i)++];
}
char pop(char stack[], int *top)
{
 return stack[(*top)--];
}
void push1(char ch, int *i, char stack[], int *top)
{
 (*top)++; (*i)++;
 stack[*top] = ch;
}


0 comments:
Post a Comment