C ++提取多项式系数

问题描述 投票:0回答:5

所以我有一个看起来像这样的多项式:-4x ^ 0 + x ^ 1 + 4x ^ 3-3x ^ 4我可以通过空格和'+'将其标记为:-4x ^ 0,x ^ 1、4x ^ 3,-,3x ^ 4

我怎么能得到带有负号的系数:-4、1、0、4,-3x是唯一会出现的变量,它将始终按顺序出现我正在计划将系数存储在数组中,数组索引是指数因此:-4将位于索引0,1将位于索引1,0将位于索引2,4将位于索引3,-3将处于索引4]

所以我有一个看起来像这样的多项式:-4x ^ 0 + x ^ 1 + 4x ^ 3-3x ^ 4我可以通过空格和'+'将其标记化为:-4x ^ 0,x ^ 1,4x ^ 3,-,3x ^ 4我怎样才能得到带有负数的系数...

c++ tokenize
5个回答
1
投票

一旦标记为“ -4x ^ 0”,“ x ^ 1”等,您就可以使用strtol()将文本表示形式转换为数字。 strtol将自动停止在第一个非数字字符处,因此“ x”将停止它; strtol将为您提供一个指向停止该字符的字符的指针,因此,如果您想偏执,可以确认该字符是x。


1
投票
Start with "-4x^0 + x^1 + 4x^3 - 3x^4"
Split after ^number: "-4x^0", " + x^1", " + 4x^3", " - 3x^4"
Now everything behind an ^ is an exponent, everything before the x is an coefficient

1
投票

在字符串中搜索'x',然后向后存储系数的每个字符,直到您击中空白为止。例如:


0
投票

作为快速解决方案,我的方法是编写一个递归下降解析器。向前移动字符串并提取所需的组件。周围有很多例子可以编写这样的表达式解析器。


0
投票

写一个简单的标记器。定义一个数字标记(/[-0123456789][0123456789]+/),一个指数标记(/x^(::number::)/)。忽略空格和+


0
投票

示例公式:Str = {“-X ^ 10 + 4X ^ 8-3X ^ 2 + 3X ^ 0 = 0”}

© www.soinside.com 2019 - 2024. All rights reserved.