#include<math.h>
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define MAX 30
#define OPERAND 10
#define OPERATOR 20
typedef struct prexp
{
int top;
int stack[MAX];
}stck;
void init(stck*);
void push(stck *,int);
int pop(stck *);
void eval(stck *,char,int,int);
int gettype(char);
void main()
{
char pos[MAX];
int num1,num2,item,l,i,pr;
stck stk;
fflush(stdin);
clrscr();
init(&stk);
printf(" Enter the postfix Expression : ");
gets(pos);
for(i=0;pos[i]!='\0';i++)
{
if(pos[i]==' '|| pos[i]=='\t')
continue;
switch(gettype(pos[i]))
{
case OPERAND: item=pos[i]-'0';
push(&stk,item);
break;
case OPERATOR: num1=pop(&stk);
num2=pop(&stk);
eval(&stk,pos[i],num2,num1);
}
}
printf("%d",stk.stack[0]);
getch();
}
void init(stck *st)
{
st->top=-1;
}
void push(stck *st,int num)
{
st->top++;
st->stack[st->top]=num;
}
int pop(stck *st)
{
int num;
num=st->stack[st->top];
st->top--;
return num;
}
void eval(stck *st,char op,int num1,int num2)
{
int res;
switch(op)
{
case '+': res=num1+num2;
break;
case '-': res=num1-num2;
break;
case '*': res=num1*num2;
break;
case '/': res=num1/num2;
break;
case '%': res=num1%num2;
break;
case '$': res=pow(num1,num2);
break;
}
push(st,res);
}
int gettype(char c)
{
switch(c)
{
case '+':
case '-':
case '*':
case '/':
case '$':
case '%': return OPERATOR;
default : return OPERAND;
}
}
#include<stdio.h>
#include<string.h>
#include<conio.h>
#define MAX 30
#define OPERAND 10
#define OPERATOR 20
typedef struct prexp
{
int top;
int stack[MAX];
}stck;
void init(stck*);
void push(stck *,int);
int pop(stck *);
void eval(stck *,char,int,int);
int gettype(char);
void main()
{
char pos[MAX];
int num1,num2,item,l,i,pr;
stck stk;
fflush(stdin);
clrscr();
init(&stk);
printf(" Enter the postfix Expression : ");
gets(pos);
for(i=0;pos[i]!='\0';i++)
{
if(pos[i]==' '|| pos[i]=='\t')
continue;
switch(gettype(pos[i]))
{
case OPERAND: item=pos[i]-'0';
push(&stk,item);
break;
case OPERATOR: num1=pop(&stk);
num2=pop(&stk);
eval(&stk,pos[i],num2,num1);
}
}
printf("%d",stk.stack[0]);
getch();
}
void init(stck *st)
{
st->top=-1;
}
void push(stck *st,int num)
{
st->top++;
st->stack[st->top]=num;
}
int pop(stck *st)
{
int num;
num=st->stack[st->top];
st->top--;
return num;
}
void eval(stck *st,char op,int num1,int num2)
{
int res;
switch(op)
{
case '+': res=num1+num2;
break;
case '-': res=num1-num2;
break;
case '*': res=num1*num2;
break;
case '/': res=num1/num2;
break;
case '%': res=num1%num2;
break;
case '$': res=pow(num1,num2);
break;
}
push(st,res);
}
int gettype(char c)
{
switch(c)
{
case '+':
case '-':
case '*':
case '/':
case '$':
case '%': return OPERATOR;
default : return OPERAND;
}
}
No comments:
Post a Comment