繁体   English   中英

用C ++评估数学表达式

[英]Evaluating a mathematical expression in C++

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

3 * 2 ^ 3 ^ 2 * 5

并且应该这样评估:

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

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

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

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

我在这个特定步骤上停留了一段时间,即将两个向量容器封装的表达式评估为整数。 我看了一些可以在网上找到的数学解析器,但是我仍然看不到如何实施适当的评估。

一个解决方案将不胜感激。

在此处输入图片说明

表达式模板可以满足您的需求 它们使按非标准顺序和/或行为评估表达式成为可能-使用它们,您还可以为表达式中的同一运算符定义多种含义。

解析表达式时只需计算值,即可为最终乘积保留一个变量,为当前被乘数保留一个变量(即具有对应基数的当前指数组)。 如您所见,依次应用每个指数操作数,从而执行左联想指数。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM