Blogger news

Followers

Sunday, September 15, 2013


Design,develop and execute a program in C to execute a validpostfix expression using stack. Assume that the postfix expression isread as a single line consisting of non-negative single digit operandsand binary arithematic operators.The arithematic operators are +(add),-(subtract),*(multiply) and /(add).


CLICK HERE TO DOWNLOAD PROGRAM FILE NOW!

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
void infix_postfix(char[],char[]);
char s[30];
int top=-1;
void push(char elem)
{
 s[++top]=elem;
 }
 char pop()
 {
 return(s[top--]);
 }

void main()
{
char infix[20];
char postfix[20];
clrscr();
printf("Enter a valid infix expression\n");
gets(infix);
infix_postfix(infix, postfix);
printf("The postfix expression is\n");
puts(postfix);
getch();
}

void infix_postfix(char infix[],char postfix[])
{

 int j;
 int i;

 char symbol,x;

 push('#');
 j=0;
 for(i=0;i<strlen(infix);i++)
 {

  symbol=infix[i];
  switch(symbol)
  {
   case'(':
  push(symbol);
   break;
   case ')':

    while(s[top]!='(')
    {
    postfix[j++]=pop();
    }
    x=pop();
    break;
   case'/':
   case'*':
   case'+':
   case'-': while(isp(s[top])>=icp(symbol))
   {
     postfix[j]=pop();
     j++;
    }
   push(symbol);
    break;


   default:
   postfix[j++]=symbol;
   break;
   }
   }
   while(s[top]!='#')
   {
    postfix[j++]=pop();
    }

   postfix[j]='\0';
   }

int isp(char symbol)
{
switch(symbol)
{
case '/':
case '*':return (3);
case '+':
case '-':return (2);
case ')':
case '(':return (1);


case '#':return (-1);
default :return (0);
}
}
int icp(char symbol)
{
switch(symbol)
{
case'/':
case'*':return (3);
case'+':
case'-':return (2);
case'#':return (-1);
default:return (0);
}
}

 ------

/*Program Ends*/


CLICK HERE TO DOWNLOAD PROGRAM FILE NOW!

0 comments: