2 回答

TA贡献1946条经验 获得超4个赞
您必须创建一个解析器 => 分析参数,例如
解析器例如:https://github.com/mariuszgromada/MathParser.org-mXparser
如果没有库,我建议考虑像“3 * X = 2”这样的参数,如果你发现 X 它是变量,你可以循环每个字符,你可以分析 * , - , + 和 / 作为运算符:
foreach char c in args[0]
{
if (c == '*')...
if (c == '+')...
if (c == 'X') => you have identify the variable
}
在你编写逻辑来解决方程之后
这是一个开始......}
谷歌数学解析器或数学方程解析器

TA贡献1829条经验 获得超6个赞
那么,您需要做的第一件事就是编写一个解析器。根据语法的复杂性,您可以手动完成。但是,如果它很复杂,您可能想要使用工具/库来完成它。
传统上,您会使用词法分析器将您的输入转换为令牌流。然后,您将使用另一个工具使用您的语法来解析令牌流。典型的例子是 Unix 的 Lex 和 YACC 工具集。
Antlr 是一种更现代(且更易于使用)的输入解析方式。而且,它往往会链接到每个 C# 项目中。如果您购买主要的 Antlr 4 书,我认为您的问题是第一个示例。
一旦你解释并理解了输入,那么你需要想出一个求解器来求解方程。
祝你好运。
顺便说一句,“不使用库”是相对的。如果您使用 .NET 框架的任何部分,您就是在“使用库”。如果您不想使用任何 3rd 方库,请阅读我提到的一些内容以了解它们如何做事(例如,它们如何使用正则表达式)并从那里开始。
一旦您有一些代码要显示并遇到一些问题,请返回并提出 Stack Overflow 可回答的问题。
- 2 回答
- 0 关注
- 220 浏览
添加回答
举报