Marie Simulator 分数乘法

Marie Simulator Multiplication of fractions

我有一个任务是用玛丽模拟器计算圆的面积 需要它的半径

我知道在玛丽语言中没有乘法运算符,所以我们通过将数字相加多次来使用乘法,所以如果我想乘以 2*3,我可以把它写下来,比如 3+3 或 2+2+2

但是当使用圆的面积时有 pi 是 3.14 我无法想象我怎么能得到它所以谁能给我算法或代码吗?

提前致谢。

MARIE 不支持浮点数。

因此,应该参考您的课程作业或询问您的导师该怎么做,因为它并不明显。

当然可以在软件中进行浮点运算,但复杂度极高,不太可能是他们想要的。

您可以使用定点算术、分数或小数。

这里有一个可能合适的解决方案:将其中一个数字(具有小数位)乘以某个固定常数因子,进行算术运算,然后相应地解释答案。例如,我们使用 100 作为因数,所以 3.14 表示为 314。假设 r 是 9,那么我们可以将其平方 (9x9=81),然后乘以 81 x 314 = 25434。现在我们知道值太大了 100 倍,所以真正的答案是 254.34。 (您可以选择忽略 .34,或者将其四舍五入,然后忽略。254 仍然比我们从 9x9x3 得到的 243 更准确。)

Fixed point 将所有数字乘以常数(通常是 2 的幂,以便二进制小数点在相同的位位置)。加法相对简单,但乘法需要通过考虑(或排除)两个 来源按比例缩放来解释结果,这意味着答案是按比例缩放的。

如果您还需要用小数来测量半径,例如9.5,那么你可以将 9.5 和 3.14 都缩放 100。然后我们需要 950x950,然后乘以 314。答案是 100x100x100 太大了,所以 1000000x 太大了。使用这种方法,MARIE 提供的 16 位将溢出,因此您至少需要使用 32 位算法(在 16 位机器上不是微不足道的)。

您可以使用两个不同的比例因子,例如9.5 为 95,3.14 为 314。以 95x95x314 为例,10000x 太大了,因此请相应地解释答案。这仍然会溢出 MARIE 的 16 位

分数将为所有数字保留分子和分母。因此,3.14 可能是 314/100,而 9.5 可能是 95/10 — 并简化为 157/50 和 19/2。要添加,您必须找到一个公分母,转换,然后对分子求和。要乘以分子和分母:分子 = 19x19x157,分母 = 2x2x50。正好适合 16 位无符号算术,但仍然溢出 16 位有符号算术..

最后,二进制编码的十进制更像是一种字符串格式,其中数字每个字节或每个半字节(压缩十进制)存储一个十进制数字。加法和减法算法需要考虑可变长度输入。

大整数形式也使用类似于二进制编码的十进制,但组成更大的元素而不是单个十进制数字。

所有这些方法都需要深思熟虑,您想要消除的限制越多,所需的工作就越多。所以,我建议回到你的课程去寻找他们真正想要的东西。