我是C++的初学者,正在尝试查找是否存在允许“扫描”输入以检测输入的方程式的函数。

基本上,我想做的是输入类似于(a-b)^2的程序,程序会将其扩展为a^2-2*a*b+b^2或输入ax^2+by+c,程序将给我a(x-α)+β

我之前所做的只是简单地询问要输入哪种类型的方程式,然后具体询问每个因素是什么(像这样):

int a, a2;
int b, b2;
int inbetween;
cout << "Equation of type (ax+by)^2.\nPlease enter the factor of X : ";
cin >> a;
cout << "Please enter the factor of Y : ";
cin >> b;
a2 = a*a; //pow(a,2)
b2 = b*b; //pow(b,2)
inbetween = 2*a*b;
cout << "(" << a << "x + " << b << "y" << ")^2 = " << a2 << "x + " << inbetween << "xy + " << b2 << "y\n";
// (ax + by)^2 = a^2x + 2*a*b*xy + b^2y

但这正是我不想做的。

我想知道是否有一种方法可以扩展编码程序支持的任何类型的方程式的输入。

我希望我已经足够清楚了,英语不是我的主要语言,我知道我尝试交流的内容不是很清楚。

最佳答案

您的问题很清楚(实际上这是IMO一个非常有趣的问题)。

是的,这是可能的,但是据我所知,没有简单的方法可以做到;您将需要自己对此进行编程。我认为您的程序就可以了。

数学的整个 Realm 称为语言理论,它研究您刚刚提出的问题。为了给您解决此类问题的思路,解决此问题的最佳方法是编写自己的语法。在编写解析器之前,您将必须正式阐述语法规则,并使用regular expressions(然后是you would have two problems; D)实现这些规则。

从问题的外观来看,这将需要大量的编程工作,例如,代码的95%将决定它是哪种类型的表达式并提取值,其余5%只是用于扩展或分解。如果您要求我,那么为一个简单的程序付出过多的努力。

关于c++ - C++如何展开/分解方程式(不求解),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42638690/

10-11 16:03