科学计算器 2.3 正式版发布
支持表达式计算的科学计算器。完全可以替代Windows自带的计算器,使用起来更加人性化。支持变量保存、三角函数运算、指幂运算、角度弧度转换,除了Windows计算器的进制计算不支持外,其他的功能都已经实现。阅读全文>
发表于 @ 2006年08月25日 17:59:00|评论(loading...)|编辑|收藏
这两天抽空帮一位网友写了个简单的计算器,功能类似windows自带的计算器,就是不支持表达式计算的那种,仅供初学者参考。点击这里下载阅读全文>
发表于 @ 2005年07月13日 01:39:00|评论(loading...)|编辑|收藏
今天是5月的最后一天,正式发布科学计算器beta1版本,希望大家帮忙测试一下,欢迎交流指出错误。测试版下载地址:http://www.cnblogs.com/Files/tonyqus/Calculator.NET.zip(要下载正式版,请见本文最后)本次发布的beta1版本有这样一些功能:1. 运算表达式计算,支持三角函数、对数、指数、四则运算、开方等2. 运算表达式检查,允许表达式中有多余空格、有不合法的字符(会报错)3. 运算结果存储,提供了6个存储变量(A,B,C,D,E,F)使用注意点:1. 计算器中的负号用@表示,区别于减号,1-@1 表示1-(-1)2. STO是Save To的缩写,用于触发结果存储功能,CLR则是Clear的缩写,用于清除存储结果。3. AC按钮用于重新初始化计算器,功能类似于真实计算器的电源键
阅读全文>
发表于 @ 2005年05月31日 22:16:00|评论(loading...)|编辑|收藏
我们都知道在使用算符优先文法时必须使用两个基本栈,数栈(operand stack)和运算符栈(operator stack),来完成计算工作,然而单单使用这两个栈有一定的局限性,因此在设计时,我引入了第三个栈(op stack),下面我们就来分析一下。在使用两个栈时,如果遇到表达式 2-3*/6#,会发生什么呢?
步骤号阅读全文>
发表于 @ 2005年05月31日 21:34:00|评论(loading...)|编辑|收藏
本次发布的是文法分析器和改进的词法分析器。你可以点击这里下载。版本描述1. 文法分析器是第一次发布,属于alpha版本,还需要大家帮忙测试一下2.
词法分析器是第二次发布,该版本对字母字符串进行了限制,仅允许本计算器使用的字母串运算符获得识别,它们是cos, sin, tg, ctg,
ans, ax, bx, cx, dx, ex, sto, clr, asin, acos, atg, actg, pi, e3. 该科学计算器属于免费软件,隶属于BluePrint库项目,如果在您项目中使用,请保留原始版权声明。在上次发布的词法分析器版本中你会发现这样的问题,cossin会被识别为cossin一个字母串,现在你会发现新版本会把它识别为cos和sin测试和使用说明阅读全文>
发表于 @ 2005年05月18日 17:16:00|评论(loading...)|编辑|收藏
常数表是用来在计算器中提供常数数据用的,为了使提供常数更加方便,所以设计常数表类。大家一定会发现,在这张表中除了常数外,还有许多变量,这里之所以叫常数表,是因为这些变量的值其实是用来替换表达式中的相应字符串的。
阅读全文>
发表于 @ 2005年05月16日 22:52:00|评论(loading...)|编辑|收藏
本文是针对 设计篇之优先级表设计 一文写的,主要阐述优先级表设计的另外一种思路,当然这种思路可能是不正确的。 在这种设计中,优先级被划分为7个级别:P0,P1,P2,P3,P4,P5,P6,P7,P0优先级最低,P7最高。
优先级
运算符
P0
# (
P1
+ -
P2
* / %
P3
保留
P4
sin,cos,tg,ctg,asin,acos,atg,actg<阅读全文>
发表于 @ 2005年05月11日 00:44:00|评论(loading...)|编辑|收藏
为了引入优先级概念,我们首先来看一个简单的表达式,如下
#1+2*3# (#用于开头和结尾,并作为表达式内容)
常识告诉我们,我们会先算2*3然后计算1+6,但实际上,如果直接从语法角度看,该表达式存在两种含义:
一种含义就是我们所认为的1+(2*3)
另一种含义则是(1+2)*3
这就是说表达式存在二义性,为了消除二义性,我们必须引入优先级概念。
我们来定义一种优先级运算,定义如下:
a<b a的优先级低于b
a=b a的优先级等于b
a>b a的优先级大于b
使用时要注意,在这里aXb存阅读全文>
发表于 @ 2005年04月26日 21:09:00|评论(loading...)|编辑|收藏
点击这里下载词法分析器源代码 根据词法分析模块中的有限状态机设计的词法分析器,能够对有效状态集中的词进行分解,如果出现了不在状态集中词或符号,则会报错。具体有哪些词受到支持,可以参见这里。 测试范例: 1. 1.0+2*3= 2. 1.0+(2*3+cos3)/3.6-6= 3. tg(1.0+(sin2*3+cos3)/3.6-6)= 4. 4.0log(1.0+(sin2*3+cos3)/3.6-6)= 5. 自己想吧... 使用注意事项:
阅读全文>
发表于 @ 2005年04月19日 11:03:00|评论(loading...)|编辑|收藏