给定一个任意长的数字,我怎样才能输出它的双精度数?只要结果小于 10,我就知道如何将小数相乘,但是像 32984335 这样的大整数又如何呢?我不知道处理这种事情的正确方法。
问问题
1670 次
4 回答
5
这是您需要实现的算法:
- 当前计数从 0 开始;
- 将当前计数乘以 10:这可以通过重复 10 次,然后将所有重复值相加来实现;
- 读一个数字;
- 如果为空,则继续执行 8;
- 将其转换为实际数字:这可以通过减去 48 来实现;
- 将其添加到当前计数;
- 继续2;
- 复制当前计数;
- 把骗子加在一起;
- 使用重复减法除以十;保持商和余数;
- 抓住剩下的;
- 将其设为数字(加 48);
- 打印它;
- 从 10 中取商;
- 如果不为零,则转到 10;
- 结束。
所有这些步骤都包含基本的脑筋急转弯,所以应该很容易实现。
于 2012-07-16T14:31:38.527 回答
0
这是一个开始。它会增加一个字节的输入,但我认为您可以构建它以使其适用于任何数字。基本上,您输入一个数字,并将该数字乘以 (2) 存储在下一个指针中。你循环递减第一个数字,然后嵌套一个循环递减第二个数字;在内部循环的每次迭代中,将指针递增到第二个操作数的右侧。这是你的结果。
, take input to ptr 0
[
- decrement first operand (input)
>++ number to multiply by (2) at ptr 1
[
>+ result in ptr 2
<- decrement second operand (2)
]
<
]
>> move to result
于 2012-07-16T04:26:36.243 回答
0
这是我的BF代码:http: //ideone.com/2Y9pk8
->>+>,+
[
-----------
[
-->++++++[-<------>]<
[->+<[->+<[->+<[->+<[>----<-<+>[->+<]]]]]]>
[-<++>]<+
>,+
[
-----------
[->+<]
]
>[-<+>]<
]
<[<]
>-[<++++++++[->++++++<]>.[-]]
>[<++++++++[->++++++<]>-.[-]>]
++++++++++.[-]
<+[-<+]
->>+>,+
]
它读取每一行中的每个数字,直到 EOF,并将所有数字乘以 2..
于 2013-03-29T09:30:14.797 回答
0
这是将数字乘以 2 的代码。
,[>++<-]>。
希望这可以帮助。
于 2017-01-22T08:33:21.503 回答