c++ - 如何制作古怪的数学计算器? (最好是在 C++ 中,但其他的也可以。)

标签 c++ math random calculator

我想知道如何在 C++ 中做一些较低级别的事情,这将允许我做一些“古怪的”数学运算。具体来说,我的两个问题是:

1) 如何定义编译器能够在我的代码中识别的自己的数学符号。换句话说,我不是要解析来自用户的字符串,而是要让编译器将其识别为新的数学运算。

   ex:   3 {+} 4   will actually do 3 – 4  etc.

2) 如何从 ASCII 符号定义自定义数字。例如定义编译器识别的符号#为18(即二进制为00010010)。

   ex:   18 {+} # = 18 - 18 = 0

如果可能的话,我希望能够在编译器层面完成以上两件事。 C++、Java、C、Python 和 Objective-C 的解决方案都很好。请告诉我您的解决方案使用的语言。谢谢! :)

最佳答案

我在评论中说过,这意味着 C++ 中的宏;如果你想要的并不比你展示的复杂多少,它应该可以解决问题。将运算符定义为宏应该适用于简单的查找/替换情况,但它可能不太适合复杂的表达式和某些符号。

在我看来,我认为通过使用中缀函数作为运算符,您想要的东西在 Haskell 中是可行的,但对于初学者来说可能不是直截了当的。看看Lyah并搜索 infixr。不过,您需要具备 Haskell 的基本知识。

使用 Zeta 示例编辑,您可以在 ghci 中运行它:

(<+>) = (-) -- operator definition
(<*>) = (/)

answer = 42
answer <+> 12 -- prints 30
answer <*> 7 -- prints 6.0

关于c++ - 如何制作古怪的数学计算器? (最好是在 C++ 中,但其他的也可以。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25100310/

相关文章:

c++ - Windows 8 上用于 C++ 开发的哪个 IDE?

c++ - 如何使用具有网格三角形绝对坐标和光线开始/结束的 rayTestSingle?

java - 确定评估整数规则时的互斥

algorithm - 从区间返回数字的随机函数

c++ - C++ 中的集合和 xmemory

iphone - objective-c 轮数到最接近的 50

algorithm - 如何计算 map 上定义区域的平均点密度?

c - 无需预洗牌即可生成(非常)大的非重复整数序列

random - 如何从 Smalltalk 的集合中获取特定数量的随机元素?

c++ - 按顺序比较 C++ 迭代器是否安全