- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用二叉树以及栈对算术表达式实现四则运算等计算功能代码
#include iostream
#include string
#include sstream
#include stack
#include cmath
using namespace std;
bool IsOperator(string mystring) //判断字符串是否是运算符
{
if(mystring == -||mystring == +||mystring == *||mystring == /||mystring == ^||mystring == %)
return true;
else
return false;
}
bool IsOperator(char ops) //判断一个字符是否是运算符
{
if(ops == +||ops== -||ops== *||ops== /||ops== ^||ops== %||ops==(||ops==))
return true;
else
return false;
}
bool IsOperand(char ch) //判断是否是数字
{
if (((ch=0)(ch=9))||(ch==.))
return true;
else
return false;
}
bool isok(string exp) //判断输入是否正确
{
char check;
int error=0,lb=0,rb=0,numofoperand=0,numofoperator=0;
for(int m=0;mexp.size();m++)
{
check=exp[m];
if(IsOperand(check))
{
if(check==.)
{
if(!(exp[m-1]=0exp[m-1]=9)(exp[m+1]=0exp[m+1]=9))
{
error++;
cout浮点型数据输入有误!!!endl;
}
}
numofoperand++;
}
else if(IsOperator(check))
{
if(check==))
{
rb++;
if(rblb)
{
error++;
cout右括号不可能大于左括号!!!endl;
}
if(IsOperator(exp[m+1])(exp[m+1]==+||exp[m+1]==-||exp[m+1]==*||exp[m+1]==/||exp[m+1]==^||exp[m+1]==)||exp[m+1]==%))
{
numofoperator++;
m++;
if(exp[m]==))
rb++;
}
else if(IsOperator(exp[m+1])||IsOperand(exp[m+1]))
{
error++;
cout右括号后不可能直接跟数据或左括号!!!endl;
}
}
else if(check==()
{
lb++;
if(IsOperator(exp[m+1])exp[m+1]==()
{
m++;
lb++;
}
else if(IsOperator(exp[m+1]))
{
error++;
cout左括号后运算符只能跟左括号!!!endl;
}
}
else
{
numofoperator++;
if(IsOperator(exp[m+1])exp[m+1]==()
{
m++;
lb++;
}
else if(IsOperator(exp[m+1]))
{
error++;
cout非括号的运算符不能直接接非括号运算符!!!endl;
}
}
}
else
{
error++;
coutcheck为非法字符!!!endl;
}
}
if((error==0)(lb==rb)(numofoperand!=0)(numofoperator!=0))
return true;
else
return false;
}
bool addition(char OperatorA,char OperatorB) //A=B返回TRUE.
{
文档评论(0)