#include using namespace std; #include #include char relate[7][7] = { // ! & | ( ) # {'=', '>', '>', '<', '>', '>'}, // ! {'<', '>', '>', '<', '>', '>'}, // & {'<', '<', '>', '<', '>', '>'}, // | {'<', '<', '<', '<', '=', '0'}, // ( {'0', '>', '>', '0', '>', '>'}, // ) {'<', '<', '<', '<', '0', '='} // # }; mapsym; void init() { sym['!'] = 0; sym['&'] = 1; sym['|'] = 2; sym['('] = 3; sym[')'] = 4; sym['#'] = 5; } string removeFormate(string str) { int n = str.size(); string temp; for(int i=0; i') { //cout<<">"< 思路参考作者:(1条消息) 【模板题】【栈】表达式求值问题总结:6263:布尔表达式,01:简单算术表达式求值,4132:四则运算表达式求值(终极BOSS)_Always_ease的博客-CSDN博客 易错注意: (1)题目中给的例子,符号与符号之间有时会存在空格,而cin是遇空格和换行停止输入,所以cin不能用。使用了可以输入空格的!getline(cin,str) (1条消息) C++如何输入含空格的字符串_zhouhongkai06的博客-CSDN博客_c++输入带空格的字符串 (2)前后两个#的作用: 第一个#:作为最小优先级,起到和符号比较,防止符号数组中为空无法进行比较 !第二个#:当实现第三个案例会发现错误(不加#)。#控制循环,使表中除#以外的符号都进入运算,否则字符串遍历完有符号还未进行运算 (3) !s = judge(sign[m2-1],str[i]); 最新的和已存的符号进行比较优先级,如果优先级低于前面(一个)则运算前面的(运算完要删除),如果优先级高于前面则存入继续判断等待“优先级低于前面”的情况 (4)map的使用: (1条消息) C++(17):map的初始化_Leo的博客-CSDN博客_c++ map初始化 栈的形式实现: 待续……
思路参考作者:(1条消息) 【模板题】【栈】表达式求值问题总结:6263:布尔表达式,01:简单算术表达式求值,4132:四则运算表达式求值(终极BOSS)_Always_ease的博客-CSDN博客
易错注意:
(1)题目中给的例子,符号与符号之间有时会存在空格,而cin是遇空格和换行停止输入,所以cin不能用。使用了可以输入空格的!getline(cin,str)
(1条消息) C++如何输入含空格的字符串_zhouhongkai06的博客-CSDN博客_c++输入带空格的字符串
(2)前后两个#的作用:
第一个#:作为最小优先级,起到和符号比较,防止符号数组中为空无法进行比较
!第二个#:当实现第三个案例会发现错误(不加#)。#控制循环,使表中除#以外的符号都进入运算,否则字符串遍历完有符号还未进行运算
(3) !s = judge(sign[m2-1],str[i]); 最新的和已存的符号进行比较优先级,如果优先级低于前面(一个)则运算前面的(运算完要删除),如果优先级高于前面则存入继续判断等待“优先级低于前面”的情况
(4)map的使用:
(1条消息) C++(17):map的初始化_Leo的博客-CSDN博客_c++ map初始化
栈的形式实现:
待续……
上一篇 zzulioj:? :的用法
下一篇 docker,docker-compose快速部署java常用中间件与框架
版权所有 (c)2021-2022 MSHXW.COM
ICP备案号:晋ICP备2021003244-6号