为了账号安全,请及时绑定邮箱和手机立即绑定

从 Visual Studio 命令行参数求解一个简单的方程(不使用库)

从 Visual Studio 命令行参数求解一个简单的方程(不使用库)

C#
慕婉清6462132 2022-01-09 15:21:49
我想在 Visual Studio 中准备 ac# 程序,作为一个简单的方程求解器。方程求解器仅使用运算符(+、-、*、/)从命令行 args 运行因此输入的格式为“calc 3X + 5 = 8”,输出将为您提供 X = 1
查看完整描述

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

}

在你编写逻辑来解决方程之后


这是一个开始......}


谷歌数学解析器或数学方程解析器


查看完整回答
反对 回复 2022-01-09
?
肥皂起泡泡

TA贡献1829条经验 获得超6个赞

那么,您需要做的第一件事就是编写一个解析器。根据语法的复杂性,您可以手动完成。但是,如果它很复杂,您可能想要使用工具/库来完成它。

传统上,您会使用词法分析器将您的输入转换为令牌流。然后,您将使用另一个工具使用您的语法来解析令牌流。典型的例子是 Unix 的 Lex 和 YACC 工具集。

Antlr 是一种更现代(且更易于使用)的输入解析方式。而且,它往往会链接到每个 C# 项目中。如果您购买主要的 Antlr 4 书,我认为您的问题是第一个示例。

一旦你解释并理解了输入,那么你需要想出一个求解器来求解方程。

祝你好运。

顺便说一句,“不使用库”是相对的。如果您使用 .NET 框架的任何部分,您就是在“使用库”。如果您不想使用任何 3rd 方库,请阅读我提到的一些内容以了解它们如何做事(例如,它们如何使用正则表达式)并从那里开始。

一旦您有一些代码要显示并遇到一些问题,请返回并提出 Stack Overflow 可回答的问题。


查看完整回答
反对 回复 2022-01-09
  • 2 回答
  • 0 关注
  • 220 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号