- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
#includeiostream
#includestack
#includestring
using std::cin;
using std::string;
using std::stack;
using std::cout;
using std::endl;
int Level(char m){//算符号优先级
switch (m){
case +:
case -:
return 1;
case *:
case /:
return 2;
case (:
case ):
return 0;
case #:
return -1;
default:break;
}
}
void main(){
stackchary;//运算符堆栈
stackintx;//int 堆栈
string s= ;//接受算式表达式
string ss;//复制s
string l= ;//用于存像123的字符窜
cins;
ss=s;
s+=#$;//#将y中的运算符都拿出来,$用于表示算式结尾
int i=0;//s的下标偏移量
double c=0;//存中间运算结果
bool m=1;//判断表达式是否正确,这里只做了简单判断
while(s[i]!=$)//对表达式逐个字符扫过去
{
//往栈x中放int数*********************************************************************
if(s[i]47s[i]58){//字符0-9的ASCII范围为47-58
l+=s[i];
for(int j=i+1;s[j]47s[j]58;j++)
l+=s[j];
x.push(atoi(l.c_str()));//将类似“123”字符串换成int型压入栈中;
l= ;
i=j;
}
//对符号进行操作*******************************************************************
if(s[i]=35s[i]=47){
//35-47是一段符号的ASCII区间,主要用于捕获符号,这里没细考虑,其中还包括^等
if(y.size()==0||s[i]==(||Level(s[i])Level(y.top()))
y.push(s[i]);
else{
if(s[i]==)){//遇到)的情况,直接将y中的符号一个一个拿出来运算,直到遇到(为止
for(;y.top()!=(;y.pop()){
char d=y.top(); //取栈顶的一个元素
double a=x.top(); //将栈顶元素删除掉
x.pop();
double b=x.top();
x.pop();
switch(d){
case +:{
c=a+b;break;}
case -:{
c=b-a;break;}
case *:{
c=a*b;break;}
case /:{
c=b/a;break;}
default:break;
}
x.push(c); //中间结果放入x中
}
y.pop(); //将‘(弹出栈x
}
else{ //遇到+,-,*,/的处理
for(;y.size()!=0Level(s[i])=Level(y.top());y.pop()){{
//将y里不小于当前符号优先级的符号拿出来,运算
char d=y.top();
int a=x.top();
x.pop();
int b=x.top();
x.pop();
switch(d){
case +:{
c=a+b;break;}
case -:{
c=b-a;break;}
case *:{
c=a*b;break;}
case /:{
c=b/a;break;}
default:b
您可能关注的文档
- 2010XX移动社区体验项目策划方案.ppt
- 2010春节团拜会方案.doc
- 2010代理经销合同书.doc
- 2010电子商务实验报告.doc
- 2010反商业贿赂协议书.doc
- 2010高考化学无机推断专题复习.doc
- 2010高考世界地理复习系列课件15《世界分区-美国和加拿大》.ppt
- 2010高考试题--我看国学——传统与现代.doc
- 2010高考数学易错题解题方法大全.doc
- 2010高考最后冲刺对秦始皇、汉武帝、唐太宗、华盛顿、拿破仑等历史人物的评价.doc
- 深度解析(2026)《ISO 22002-12025食品安全前提方案—第1部分:食品制造》.pptx
- 深度解析(2026)《ISO 22002-52025食品安全前提方案—第5部分:运输和储存》.pptx
- 深度解析(2026)《ISO 22002-42025 食品安全前提方案 — 第4部分:食品包装制造》.pptx
- 徒步活动策划方案.doc
- 深度解析(2026)《ISO 22002-62025食品安全前提方案—第6部分:饲料及动物食品生产》.pptx
- 2026年新版郯城期末真题卷.doc
- 深度解析(2026)《ISO 22476-72012岩土工程勘察与测试 — 现场测试 — 第7部分:钻孔千斤顶试验》.pptx
- 深度解析(2026)《ISO 22090-22014 船舶与海洋技术 — 航向传送装置(THD) — 第2部分:地磁原理》.pptx
- 深度解析(2026)《ISO 23584-22012 光学和光子学 — 参考字典规范 — 第 2 部分:类与特性定义》:构建智能制造数据基石的专家视角与未来展望.pptx
- 深度解析(2026)《ISO 22932-92025 Mining — Vocabulary — Part 9 Drainage》:构建未来矿山“水脉”治理与可持续发展的新语言体系.pptx
最近下载
- 北京儿童医院科研岗招聘笔试题.pdf
- DB13(J)T 8491-2022 下凹桥区雨水调蓄排放设计标准(京津冀).pdf VIP
- 个人车位出租协议(10篇).pdf VIP
- 八大浪费学习.pdf VIP
- 男性公民兵役登记表PDF打印.pdf VIP
- 2024-2025学年度第一学期期末考试九年级语文试题(真题含答案解析).docx VIP
- 四川省南充高级中学2025-2026学年高一上学期12月月考试题数学含答案.pdf
- 江山南方水泥有限公司浙江省江山市大陈乡乌龙村铁锤山水泥用灰岩矿建设项目环境影响报告表.docx VIP
- 空心玻璃微珠项目可行性研究报告建议书.doc VIP
- 标准图集-12D101-5-110KV 及以下电缆敷设.pdf VIP
原创力文档


文档评论(0)