Académique Documents
Professionnel Documents
Culture Documents
char infix[30],postfix[30],stack[30],ch;
int top=-1,i=0,j=0;
char pop()
{
char op;
op=stack[top];
top--;
return op;
}
void main()
{
clrscr();
for(i=0;i<strlen(infix);i++)
{
ch=infix[i];
push(ch);
}
}
} //end of for loop
getch();
}
char stack[50],postfix[50],ch;
int top=-1,i;
float value,result,a,b,final_value;
float pop()
{
float oper;
oper=stack[top];
top--;
return oper;
}
void main()
{
clrscr();
printf("Enter a valid postfix expression\n");
gets(postfix);
for(i=0;i<strlen(postfix);i++)
{
ch=postfix[i];
if(isdigit(ch))
push(ch-'0'); //To convert from string type to integer
else if(isalpha(ch))
{
printf("Enter value of %c",ch);
scanf("%f",&value);
push(value);
}
else
{
a=pop();
b=pop();
switch(ch)
{
case '+':result=b+a;
push(result);
break;
case '-':result=b-a;
push(result);
break;
case '*':result=b*a;
push(result);
break;
case '/':result=b/a;
push(result);
break;
case '%':result=(int)b%(int)a;
push(result);
break;
default: printf("\nInvalid postfix expression");
getch();
exit(0);
}
}
}
final_value=pop();
printf("\nRESULT OF EXPRESSION IS : %f",final_value);
getch();
}