6263:布尔表达式

6263:布尔表达式,第1张

6263:布尔表达式
#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初始化

栈的形式实现:

        待续……

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4653501.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存