#include
#include
using namespace std;
char EvaluateExpression()
{
InitStack(OPTR);
InitStack(OPND);
Push(OPTR,'#');
cin>>ch;
while(ch!='#'||GetTop(OPTR)!='#')
{
if(!In(ch)){Push(OPND,ch);cin>>ch;}
else
switch(Precede(GetTop(OPTR),ch))
{
case'<' :
Push(OPTR,ch);cin>>ch;
break;
case'>':
Pop(OPTR,theta);
Pop(OPND,b) ;Pop(OPND,a);
Push(OPND,Operate(a,theta,b));
break;
case'=':
Pop(OPTR,x);cin>>ch;
break;
}
}
return GetTop(OPND);
}
typedef char SElemType;
Status In(SElemType c)
{
switch(c)
{
case'+':return TRUE;
break;
case'-':return TURE;
break;
case'*':return TURE;
break;
case'/':return TURE;
break;
case'(':return TURE;
break;
case')':return TURE;
break;
case'#':return TURE;
break;
default:return FALSE;
}
}
SElemType Precede(SElemType t1,SElemType t2){
SElemType f;
switch(t2)
{
case'+':
case'-':if(t1=='('||t1=='#')
f='<';
else
f='>';
break;
case'*':
case'/':if(t1=='('||t1=='#'||t1=='+'||t1=='-')
f='<';
else
f='>';
break;
case')':if(t1=='(')
f='=';
else
f='>';
break;
case'#':if(t1=='#')
f='=';
else
f='>';
break;
}
return f;
}
SElemType Operate(SElemType a,SElemType theta,SElemType b)
{
SElemType c;
a=a-48;
b=b-48;
switch(theta)
{
case'+':c=a+b+48;
break;
case'-':c=a-b-48;
break;
case'*':c=a*b*48;
break;
case'/':c=a/b/48;
break;
return c;
}
}
int main()
{
cout<<"请输入算术表达式,并以#结束"<<endl;
cout<<"EvaluateEpression"<<endl;
}
这代码也不完整啊。
main函数啥也没干,上面函数都没运行啊。