Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 中缀会话的后缀_C++_C_Equation_Infix Notation_Postfix Notation - Fatal编程技术网

C++ 中缀会话的后缀

C++ 中缀会话的后缀,c++,c,equation,infix-notation,postfix-notation,C++,C,Equation,Infix Notation,Postfix Notation,我无法从后缀到中缀求解这个表达式。请帮我详细了解一下 5 x y - / x y + 3 ^ 7 / + 这不是代码,而是方法,您应该将后缀扩展为中缀: 5xy-/xy+3^7/+ 5(x-y)/xy+3^7/+ (5/(x-y))xy+3^7/+ (5/(x-y))(x+y)3^7/+ (5/(x-y))((x+y)^3)7/+ (5/(x-y))((x+y)^3)/7)+ (5/(x-y))+((x+y)^3)/7这是相当直截了当的: 您阅读一个参数并决定它是值还是变量。如果是,则将参数推

我无法从后缀到中缀求解这个表达式。请帮我详细了解一下

5 x y - / x y + 3 ^ 7 / +

这不是代码,而是方法,您应该将后缀扩展为中缀:

5xy-/xy+3^7/+

5(x-y)/xy+3^7/+

(5/(x-y))xy+3^7/+

(5/(x-y))(x+y)3^7/+

(5/(x-y))((x+y)^3)7/+

(5/(x-y))((x+y)^3)/7)+


(5/(x-y))+((x+y)^3)/7这是相当直截了当的:

  • 您阅读一个参数并决定它是值还是变量。如果是,则将参数推送到堆栈上。如果不是,那就是操作员
  • 如果有运算符,则创建一棵树,该树由作为根的运算符和作为其子对象的堆栈参数组成。你把树推到堆栈上
  • 当您想要打印中缀符号时,您需要在堆栈顶部进行顺序遍历(原始的post fix符号只是同一棵树的顺序遍历)

  • 在C++中处理这个问题,我用派生类创建了一个基类(<代码>表达式<代码>),它表示不同类型的节点(<代码>值,<代码>变量< /代码>,和<代码>二进制操作< /C> >,并维护<代码> STD::堆栈。将其编码主要是一个打字练习。

    中缀后缀:

    5 x y - / x y + 3 ^ 7 / +
    
    台阶

    5 x y-/
    A) 5xy-/=5(x-y)/=(5/(x-y))
    xy+
    B) xy+=(x+y)
    (x+y)3^
    B.1)(x+y)3^=(x+y)^3)
    现在,(5/(x-y))((x+y)^3)7/+
    =(5/(x-y))((x+y)^3)/7)+ =(5/(x-y))+((x+y)^3)/7)

    后缀和前缀是不使用括号的表达式。运算符的优先级是根据表达式中出现的顺序决定的,因此计算表达式时无需搜索下一个操作来执行-FAST

    在中缀表达式中,运算符的优先级被括号覆盖。因此中缀表达式中有括号-需要搜索要执行的操作,例如A+B%D-因此

    这就是转换在计算机科学中有用的原因

    @Grijesh Chauhan的答案无疑是正确的,而且切中要害,但我想知道“不接受”我的答案的原因。这是错误的还是描述得不那么清楚?因此,我可以对其进行改进。与其他答案相比,您的答案提供了更通用的方法,因此可以用于处理后缀符号中的任何表达式。上面引用的答案只是对给定表达式的转换,而此答案是进行转换的实际方式和逻辑。比我的好。应该被接受。