所以我有一个多项式加法问题,如下所示:
(1*x+2*x^3-1*x+7)+(1+1*x^2-1*x+1*x^4)
我需要弄清楚如何提取系数和指数的数字,并将它们输入到动态分配的2D数组中(从这里我可以对它们进行排序并在输出答案之前将它们加在一起)。
我很遗憾如何做到这一点,因为多项式可以是任何度数级别并包含任意数量的项。在我提取所有数字后,我可以动态分配它们。我需要帮助的部分是:
如果有人能够回答这个问题,或者至少指出我正确的方向,我们将不胜感激。
答案 0 :(得分:2)
您的问题看起来像是解析和评估。
步骤1:你需要解析字符串,假设有一个中缀表达式,所以 你可以提出系数
步骤2:将这些系数推入 vector / deque 等以执行 多项式计算。
以下是一些很好的例子:
Evaluating arithmetic expressions from string in C++
What is the best way to evaluate mathematical expressions in C++?
答案 1 :(得分:0)
要从字符串中提取系数,您需要创建解析器。您可以使用boost.spirit这样的特殊库,您可以使用构建Flex等解析器的特殊工具,也可以使用正则表达式手动创建自己的工具。
要存储系数,您可以使用std::vector<int>
使用索引作为x的幂,因此对于1 * x + 2 * x ^ 3-1 * x + 7,您的向量将具有数据:
{ 7, -1, 0, 2 } // 7*x^0 + -1*x^1 + 0*x^2 + 2*x^3
然后您不需要对它们进行排序以添加系数。要存储所有多项式,请相应地使用std::vector<std::vector<int>>
。