带括号的四则运算——华为OJ
来源:互联网 发布:淘宝订单接口 编辑:程序博客网 时间:2024/05/18 21:43
题目:
输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值
注: 1、表达式只含 +, -, *, /, (, ), 四则运算符
2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况
3、要考虑加减乘除按通常四则运算规定的计算优先级
4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生
5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何 字符,不会出现计算溢出情况
充分利用了STL的模板类:栈stack和队列queue 还是最传统的计算方式:先把中缀表达式转换为后缀表达式,再按顺序计算就很简单了
#include<iostream>#include<string>#include<stack>#include<queue>using namespace std;int main(){ string a; int i=0; stack<char> s; queue<char> q; getline(cin,a);///////////////////////// s.push(a[1]); q.push(a[0]); for(i=2;i<a.size();i++) { if((a[i]<='9')&&(a[i]>='0')) q.push(a[i]); else if((a[i]=='+')||(a[i]=='-')) { if((s.top()=='*')||(s.top()=='/')) { q.push(s.top()); s.pop(); } s.push(a[i]); } else if((a[i]=='*')||(a[i]=='/')) s.push(a[i]); else if(a[i]=='(') s.push(a[i]); else if(a[i]==')') { while(s.top()!='(') { q.push(s.top()); s.pop(); } s.pop(); } } /////全部出栈//////////////// while(!s.empty()) { q.push(s.top()); s.pop(); } //开始计算后缀表达式 //需要用一个栈 stack<int> ans; int x1,x2; while(!q.empty()) { if((q.front()<='9')&&(q.front()>='0')) { ans.push(q.front()-'0'); q.pop(); } else if(q.front()=='+') { x2=ans.top(); ans.pop(); x1=ans.top(); ans.pop(); ans.push(x1+x2); q.pop(); } else if(q.front()=='-') { x2=ans.top(); ans.pop(); x1=ans.top(); ans.pop(); ans.push(x1-x2); q.pop(); } else if(q.front()=='*') { x2=ans.top(); ans.pop(); x1=ans.top(); ans.pop(); ans.push(x1*x2); q.pop(); } else if(q.front()=='/') { x2=ans.top(); ans.pop(); x1=ans.top(); ans.pop(); ans.push(x1/x2); q.pop(); } } cout<<ans.top();}
0 0
- 带括号的四则运算——华为OJ
- 华为OJ—四则运算
- 华为OJ——四则运算
- 带括号的四则运算
- 带括号的四则运算 汇编
- 0-9 带括号的四则运算
- 不带括号的四则运算步骤
- java 实现带括号的加减乘除四则运算
- 计算带括号的四则运算表达式
- 不带括号的简单四则运算
- C/C++带括号的四则运算
- c++栈之带括号的四则运算
- 四则运算(带括号)的小程序
- [编程题]带括号的四则运算
- 带括号的四则运算C语言实现
- 华为OJ(四则运算)
- 【华为OJ】【095-四则运算】
- 【华为OJ】四则运算
- [转] 图像放大并进行BiCubic插值 Matlab/C++代码
- poll函数和select函数
- 【麦可网】Cocos2d-X跨平台游戏开发学习笔记---第二十三课:Cocos2D-X音频系统1-3
- sync_relay_log_info
- 使用第三方库时路径配置的原理
- 带括号的四则运算——华为OJ
- 设计模式之Singleton(单态/单态)
- Android自定义SwitchButton左右滑动开关按钮控件
- 排序算法小结
- Leetcode#5 Longest Palindromic Substring
- unity5实现数字矩阵效果实现
- 利用MAVEN打包时,如何包含更多的资源文件
- BZOJ 2667 cqoi2012 模拟工厂 贪心
- UIActivityIndictorView的使用