【问题标题】:Calculator in C of any length and precision (Real numbers) [closed]C中任何长度和精度的计算器(实数)[关闭]
【发布时间】:2016-01-26 21:21:11
【问题描述】:

最近在我的大学里,我被要求用 C 编写一个计算器。这是一个完整的任务:

计算器——程序应该允许执行基本的数学运算 整数运算(加法、减法、乘法、除法) 以及任何长度和精度的实数。

我的想法是将每个数字存储在双向链表的单独“块”中。我已经设法在没有任何严重问题的情况下进行加法和减法,使用这种方法效果很好。但是乘法和除法是一个问题。我不知道我应该如何照顾它。我应该也使用链表还是有另一种更好的方法?请给我任何想法!请记住,这是我学习的第一学期,所以它不应该太复杂。谢谢!

【问题讨论】:

  • 可能的答案太多,或者对于这种格式来说,好的答案太长了。请添加详细信息以缩小答案范围或隔离可以在几段中回答的问题。
  • 这是交易。我为你的家庭作业编写了代码。在你装饰我的休息室后,我会这样做。
  • 值得注意的是,如果您的计算器只需要接受十进制数字(例如1.7)和四个基本算术运算符,您只需要弄清楚如何表示rational numbers,即比代表所有real numbers 容易得多。
  • 显示示例输入和输出。算术表达式有多长?括号是否允许更改顺序或操作?你是如何使用链表的?如果要求是根据选择菜单一次只加/减/乘/除 2 个数字,那么答案很简单
  • 这是一个很好的练习。是的,使用链表。乘法应该很简单。当然,您需要跟踪小数点的位置。对于除法,我建议您像在文法学校学习的那样进行长除法。那么你需要有一种方法来终止长分数。

标签: c linked-list calculator arithmetic-expressions


【解决方案1】:

研究实现有限状态机。您还可以加入堆栈数据结构,以处理超过任何数据类型的数字的算术运算。

【讨论】:

  • 这应该是一条评论
  • 我没有足够的信用
【解决方案2】:

如果您必须自己实现,那么您应该对“任意精度算术”或 BigNum 进行一些研究。等等

此链接将帮助您入门,其中描述了将数字存储在数组中。它还包含指向您可能会发现有用的算法的更多链接: https://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic

【讨论】:

    猜你喜欢
    • 2019-09-02
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-12-08
    • 1970-01-01
    • 2020-09-02
    • 2020-11-08
    • 1970-01-01
    相关资源
    最近更新 更多