gpt4 book ai didi

c++ - 在 C++ 中评估数学表达式

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:54:57 25 4
gpt4 key购买 nike

在我已经研究了一段时间的编码问题中,我已经到了必须计算如下所示的数学表达式的步骤:

3 * 2 ^ 3 ^ 2 * 5

应该这样评价:

3 * 2 ^ 3 ^ 2 * 5 = 3 * 2^(3 * 2) * 5 = 3 * 64 * 5 = 960.

在我当前的实现形式中,我有两个 vector ,一个包含整数形式的操作数,而另一个包含字符形式的运算符。

对于当前情况,它们将是:vector<int> operands = { 3, 2, 3, 2, 5 }vector<char> operators = { '*', '^', '^', '*' } .

这只是一个示例,运算顺序可能有所不同,因为乘法可能并不总是第一个/最后一个要执行的运算。

我已经在这个特定步骤停留了一段时间,即将两个 vector 容器封装的表达式计算为一个整数。我查看了一些可以在网上找到的数学解析器,但我仍然不知道如何实现正确的评估。

非常感谢解决方案。

enter image description here

最佳答案

在解析表达式时简单地计算值,为最终乘积维护一个变量,为当前被乘数维护一个变量(即具有相应基数的当前指数组)。如您所见,按顺序应用每个指数操作数,从而执行左结合取幂。

顺便说一句,我不会费心以某种矢量化格式存储整个表达式;我认为这样做没有任何有用的理由。

关于c++ - 在 C++ 中评估数学表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781894/

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