gpt4 book ai didi

c++ - bool 后缀表示法

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:26 25 4
gpt4 key购买 nike

我必须编写一个 ADT 字符堆栈来处理 bool 值的后缀表示法。

这是后缀表示法之一的示例。

T T && F || ! (这将是输入文本)

我知道这计算结果为 false。

我的问题是。

这个符号最终在代码中看起来像什么。(一旦输入字符串被解析)

我的猜测是:

if ( !( true && true || false) )
//do something;
else
//do something else

我很确定这是错误的,我离题太远了,我尝试了各种组合。我无法让它返回 false。

最佳答案

您通常会按堆栈方式解释 RPN,使用二元运算符从堆栈中弹出两个参数,并弹出一个一元参数。

  1. T T — 将两个 true 值压入堆栈,堆栈为:T T,
  2. && — 弹出两个值,压入:T && T,栈是:T,
  3. F — 将 false 压入堆栈,堆栈为:T F,
  4. || — 弹出两个值,压入:T || F,堆栈为:T
  5. ! — 弹出一个值,压入否定版本:!T,堆栈为:F

所以你最终的结果就是这些操作的结果(从下往上写):

bool result = !(false || (true && true));

您只需要从头开始阅读;首先(从下到上)转换为前缀表示法可能会更容易一些:

! ( || ( F && ( T T ) ) )

然后你只需将二元运算符移到括号内:

! ( || ( F && ( T    T ) ) )
-----> ----->
! ( F || ( T && T ) )

关于c++ - bool 后缀表示法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12133922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com