有啥想法可以像读取代码一样读取用户输入吗?

Posted

技术标签:

【中文标题】有啥想法可以像读取代码一样读取用户输入吗?【英文标题】:Any idea to read user input as if it was code?有什么想法可以像读取代码一样读取用户输入吗? 【发布时间】:2018-08-05 04:57:56 【问题描述】:

我正在尝试使用主要操作:'^','v','*'制作一个布尔矩阵计算器。我已经做到了,因此您可以通过要求输入每个矩阵框来填充它。但是当您尝试填充 10x10 矩阵时,它会变得乏味。所以我想有一个可以按条件填充的选项(比如 i=row 和 j=column)。

我希望用户能够输入自己的填充选项。喜欢:

if (5 <= 3i+2j <=8)
    m[i][j] = 1;
else m[i][j] = 0;

m[i][j] = [pow(-1,i+j)+pow(-1,i*j)]/2;

编写代码很容易,但这些条件应由用户输入。所以我正在考虑将所有输入存储在一个字符串上,然后从那里解释它,但我发现它很复杂。你会说这是一个糟糕/不可行的解决方案吗?

【问题讨论】:

所以你要求在用户输入上运行编译器?使用 python 或类似工具可能会更好。 这很复杂,取决于您要支持多少操作,但这是正确的方向。用户可以从菜单中选择少量的固定算法要容易得多。如果他们想要更花哨的东西,可以使用 excel、matlab 等任何工具来生成数字并将数字作为文件提供给程序。 您可以为用户输入的代码制作自己的解析器。 您正在尝试实现一种简单的编程语言。你可能想读一本关于编译器和解释器的书。 Lua 是一种简单的语言,经过明确设计,易于嵌入到其他应用程序中。我建议您对其进行调查,因为它可以很简单地嵌入到 C++ 应用程序中,并且可以让您的用户在 Lua 中编写自定义函数,然后在您的主 C++ 应用程序中运行。 【参考方案1】:

考虑将所有输入存储在一个字符串中,然后从那里进行解释,但我发现它很复杂。

与其将所有输入存储在一个字符串中,为什么不显示两个选项,然后让用户填写变量值?像这样:

Your matrix fill options :

[A]

if (a <= b*i+c*j <= d )
    m[i][j] = 1;
else m[i][j] = 0;

[B]

m[i][j] = [pow(-1,i+j)+pow(-1,i*j)]/2;

然后如果用户选择“A”,请他们输入 a、b、c、d 值。 “B”也是如此。您也可以添加简单的视觉效果。 ( :

你会说这是一个糟糕/不可行的解决方案吗?

恕我直言,坏是相对的。如果您希望此代码可维护,请不要忘记注释代码关键点。如果您正在为附加约束的任务进行此操作.. 看来您做得对。

在我个人看来,500 行代码可以自信地运行良好,比 5 行代码让我内心深处感到不安要好得多。如果您清楚要执行的计划算法,剩下的就是正确编码,并在适用的情况下改进/简化 GUI。

希望对您有所帮助.. ( :

【讨论】:

以上是关于有啥想法可以像读取代码一样读取用户输入吗?的主要内容,如果未能解决你的问题,请参考以下文章

shell命令行和在DOS窗口中输入命令有啥区别吗

如果我们像我们自己的方法一样调用委托方法有啥问题吗

为啥我可以从 STDOUT 读取并获取用户的终端输入?

读取输入不同菜单c#

C语言--如何读取 csv 文件里的数据?用户输入:巧克力, 系统读取csv文件里巧克力对应的牌子和价格,并输出

读取用户输入并更新数据(txt)文件?