当前访客身份:游客 [ 登录 | 加入 OSCHINA ]

代码分享

当前位置:
代码分享 » C/C++  » 常用工具方法
zhcosin

计算器 abacus 2 发布

zhcosin 发布于 2013年01月11日 16时, 39评/6752阅
分享到: 
收藏 +0
2

一、简介

        abacus 2 是一个扩展性良好的小型计算器,得名于中国古代著名的计算工具----算盘,目前版本 2。支持四则混合运算、支持符号常量、支持变量参与运算、支持众多的数学函数、并可以把自己常用的公式定义成函数并像内置函数一样使用。详情请查看帮助文档(根文件夹下有中文帮助文件)。

    软件维护地址: http://code.google.com/p/abacus/
   软件下载地址:http://code.google.com/p/abacus/downloads/list
   源代码svn地址: http ://abacus.googlecode.com/svn/trunk/
    软件技术文档: http://my.oschina.net/u/736932/blog?catalog=254400

    欢迎使用并报告问题或者提出建议,联系方式:

        E-mail: zhoucosin@163.com
        QQ    : 532319166

二、功能

    1. 支持常规四则混合运算.
    2. 支持众多的数学函数,例如三角函数与组合数,关于函数的列表,请查看软件帮助.
    3. 支持符号常量,如圆周率 pi 与自然对数的底数 e.
    4. 支持变量参与运算(不是符号计算)
    5. 支持公式型函数(即含变量的表达式作为函数,以实现功能扩展,比如你可以把一元二次方程的求根公式定义为一个函数,以便用它来解方程).

========== 最近更新: 2013-01-11 ==========

更新记录:
2013-01-11 
1. 添加了对变量参与运算的支持,重构了错误管理机制,对用户在自己已经定义的函数基础上定义新的函数提供了支持,例如在定义了圆的面积函数之后用它定义圆环的面积函数。 

2013-01-08:
1. 添加了对用户自定义公式型函数的功能,例如用户可以把圆的面积公式定义为一个函数:
        func AreaOfCycle(r) = pi * r * r
然后就可以在表达式中直接使用这个函数进行计算,同样,还可以把一元二次方程的求根公式定义为一个函数:
        func solve(a, b, c) = (-b + sqrt(b ^ 2 - 4 * a * c)) / (2 * a)
如此等等,从而实现功能扩展。

标签: <无>

代码片段(4) [全屏查看所有代码]

1. [文件] abacus2.rar ~ 1MB     下载(728)     [全屏预览]

2. [文件] abacus2.tar.gz ~ 2MB     下载(405)     [全屏预览]

3. [图片] abacus2.jpg    

4. [图片] abacus_cover.jpg    



开源中国-程序员在线工具:Git代码托管 API文档大全(120+) JS在线编辑演示 二维码 更多»

发表评论 回到顶部 网友评论(39)

  • 1楼:zhcosin 发表于 2013-01-09 15:40 回复此评论
    abacus 2 发布啦,添加了用户自定义函数的功能,用户可以把自己常用的公式定义成函数,从而在表达式中使用,详情请看更新记录。
  • 2楼:zhcosin 发表于 2013-01-12 09:50 回复此评论
    这个计算器基本上已经比较成熟了,后期工作就是 按照编译原理的方法重构词法分析和语法分析,目前不支持象求和sigma这样的高阶函数,因为不支持函数对象作参数,这个当初没考虑到,暂时也没有思路。
  • 3楼:goodluck 发表于 2013-01-10 18:56 回复此评论
    两个建议:
    1. 支持 readline 库,便于交互式操作
    2. 错误处理,现在算 22^2222 就会直接崩溃
  • 4楼:zhcosin 发表于 2013-01-11 08:50 回复此评论

    引用来自“goodluck”的评论

    两个建议:
    1. 支持 readline 库,便于交互式操作
    2. 错误处理,现在算 22^2222 就会直接崩溃
    你确定你计算 22^2222 的时候是崩溃而不是输出无穷大?我这无论是在 windows 还是在 mingw 里测试都没有崩溃,windows 下输出 1.#INF,mingw 下输出 inf,程序内部是用 double 表示数的类型的,所以现在不支持超出 double 数据范围的数。
  • 5楼:goodluck 发表于 2013-01-11 09:06 回复此评论

    引用来自“zhcosin”的评论

    引用来自“goodluck”的评论

    两个建议:
    1. 支持 readline 库,便于交互式操作
    2. 错误处理,现在算 22^2222 就会直接崩溃
    你确定你计算 22^2222 的时候是崩溃而不是输出无穷大?我这无论是在 windows 还是在 mingw 里测试都没有崩溃,windows 下输出 1.#INF,mingw 下输出 inf,程序内部是用 double 表示数的类型的,所以现在不支持超出 double 数据范围的数。
    奇怪,昨天确实崩溃了,但可能是其他原因吧,也没有再试。今天再试就是 inf 了,问题无法再现了
  • 6楼:zhcosin 发表于 2013-01-11 09:18 回复此评论

    引用来自“goodluck”的评论

    引用来自“zhcosin”的评论

    引用来自“goodluck”的评论

    两个建议:
    1. 支持 readline 库,便于交互式操作
    2. 错误处理,现在算 22^2222 就会直接崩溃
    你确定你计算 22^2222 的时候是崩溃而不是输出无穷大?我这无论是在 windows 还是在 mingw 里测试都没有崩溃,windows 下输出 1.#INF,mingw 下输出 inf,程序内部是用 double 表示数的类型的,所以现在不支持超出 double 数据范围的数。
    奇怪,昨天确实崩溃了,但可能是其他原因吧,也没有再试。今天再试就是 inf 了,问题无法再现了
    啊.........
  • 7楼:zhcosin 发表于 2013-01-11 09:19 回复此评论

    引用来自“goodluck”的评论

    引用来自“zhcosin”的评论

    引用来自“goodluck”的评论

    两个建议:
    1. 支持 readline 库,便于交互式操作
    2. 错误处理,现在算 22^2222 就会直接崩溃
    你确定你计算 22^2222 的时候是崩溃而不是输出无穷大?我这无论是在 windows 还是在 mingw 里测试都没有崩溃,windows 下输出 1.#INF,mingw 下输出 inf,程序内部是用 double 表示数的类型的,所以现在不支持超出 double 数据范围的数。
    奇怪,昨天确实崩溃了,但可能是其他原因吧,也没有再试。今天再试就是 inf 了,问题无法再现了
    不过你提到的 readline 库,这个不错,这个可以有,呵呵,谢了。
  • 8楼:redraiment 发表于 2013-01-13 11:17 回复此评论
    你可以参看一下linux下bc命令的代码,它包含你所列的所有的功能(能定义函数、变量、数组等),并且还是无限精度的!它的前端是lex和yacc写的。
  • 9楼:zhcosin 发表于 2013-01-13 19:28 回复此评论

    引用来自“redraiment”的评论

    你可以参看一下linux下bc命令的代码,它包含你所列的所有的功能(能定义函数、变量、数组等),并且还是无限精度的!它的前端是lex和yacc写的。
    Thank you.
  • 10楼:帖子列表 发表于 2013-01-15 17:30 回复此评论
    请问为什么做这个?
  • 11楼:looyer 发表于 2012-09-19 16:10 回复此评论
    楼主很牛,有个地方小小的改进下,允许输入空格,刚刚在win7x64上使用下输入3 * 5就崩溃了。只能计算
    3*5,中间没有空格的这种。改善一下用户体验,呵呵。
  • 12楼:zhcosin 发表于 2012-09-19 20:01 回复此评论

    引用来自“looyer”的评论

    楼主很牛,有个地方小小的改进下,允许输入空格,刚刚在win7x64上使用下输入3 * 5就崩溃了。只能计算
    3*5,中间没有空格的这种。改善一下用户体验,呵呵。
    呵呵,目前是不允许输入空格的,直接提示非法字符了。待我考虑考虑要不要允许空格存在,呵呵。
  • 13楼:zhcosin 发表于 2012-09-19 20:07 回复此评论
    再说它也不会崩溃吧,只是会提示说空格是不合法的字符,在你那崩溃了?
  • 14楼:zhcosin 发表于 2013-01-18 21:36 回复此评论
    下一阶段的工作:实现一种简单的用于计算的编程语言,可以在配置文件中定义有控制流程的函数,并像内置函数一样使用,目前正在拼命学习编译原理.....啃ing.....
  • 15楼:zhcosin 发表于 2012-09-20 16:08 回复此评论

    引用来自“looyer”的评论

    楼主很牛,有个地方小小的改进下,允许输入空格,刚刚在win7x64上使用下输入3 * 5就崩溃了。只能计算
    3*5,中间没有空格的这种。改善一下用户体验,呵呵。
    谢谢你的建议,已经可以在表达式中加入空格了,代码已经更新,呵呵。
  • 16楼:zhcosin 发表于 2013-01-25 15:27 回复此评论
    项目托管到 googlecode 上了,项目主页及源代码 svn 下载地址见简介部分。
  • 17楼:zhcosin 发表于 2012-09-29 13:38 回复此评论
    在接下来的版本 2.0 中,将支持用户自定义宏的功能,敬请关注。
  • 18楼:刘地 发表于 2012-09-29 17:19 回复此评论

    引用来自“zhcosin”的评论

    在接下来的版本 2.0 中,将支持用户自定义宏的功能,敬请关注。
    恩。 其实我已经做出来支持函数、变量,支持导入新函数、新变量,支持求导、支持化简的版本了。
  • 19楼:zhcosin 发表于 2012-09-30 19:30 回复此评论
     正在对代码添加完善的注释.............
  • 20楼:dclink 发表于 2012-10-23 21:59 回复此评论
    向楼主学习
开源从代码分享开始 分享代码
zhcosin的其它代码 全部(5)...