【问题标题】:Solving a simple equation from Visual Studio Command Line Arguments (without using libraries)从 Visual Studio 命令行参数求解一个简单的方程(不使用库)
【发布时间】:2019-02-13 22:05:53
【问题描述】:

我想在 Visual Studio 中准备一个 c# 程序,作为一个简单的方程求解器。方程求解器仅使用运算符(+、-、*、/)从命令行 args 运行

所以输入格式为“calc 3X + 5 = 8” 并且输出会给你 X = 1

【问题讨论】:

  • 欢迎来到 Stack Overflow!请查看writing the perfect question 以帮助您提出一个好问题,从而获得一个好的答案。
  • 你尝试了什么?您能否展示一些您已经尝试过的代码?

标签: c# command-line command-line-arguments equation


【解决方案1】:

你必须创建一个解析器 => 像这样分析参数

解析器例如: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
}

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

这是一个开始... }

google 数学解析器或数学方程解析器

【讨论】:

    【解决方案2】:

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

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

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

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

    祝你好运。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      • 1970-01-01
      • 2015-08-08
      • 2023-03-24
      • 2011-04-22
      • 1970-01-01
      • 2012-01-03
      相关资源
      最近更新 更多