关于c ++当包含两个电源符号(^^)时将infix转换为postfix

时间:2018-11-20 11:29:35

标签: c++ postfix-notation infix-notation

我的目标是将中缀表达式转换为后缀表达式。

此行有问题:

while(precedence(stack[top])>=precedence(symbol)) 

当条件为++**/--时,(并且应该)满足条件,因为它从左开始检查,但在有权力的情况下{ {1}})从右边开始。如果功率加倍(^,我不想进入此循环。

in while(precedence(stack [top])> = precedence(symbol))中的简单操作,如果顶部的运算符是(^)而符号的运算符是(^)我不想输入while循环,我将删除这种情况是因为它是错误的,但我不知道如何。

C ++:

^^

1 个答案:

答案 0 :(得分:0)

  

在while(precedence(stack [top])> = precedence(symbol))中简单输入,如果顶部的运算符是(^)而符号的运算符是(^),我不想进入while循环

使用

while (precedence(stack[top]) >= precedence(symbol) && stack[top] != '^' && symbol != '^')

在条件中添加&&将使它检查堆栈顶部的运算符和符号都不是'^'

您也可以这样做

// ...

case '^':
    if (stack[top] != '^' && symbol != '^')
        while(precedence(stack[top])>=precedence(symbol))
        {
            temp=pop();
            postfix[pos++]=temp;
        }

    // ...