说明:已经把下载文件转移到http://www.shaohui.org/exprcalc.html了.
两年以前在学校的时候,做了一个表达式求解的程序,是用C写的DOS环境下运行的程序,而现在用DOS的人在这个世界上已经差不多绝迹了。所以,实际上这个程序已经失去 了它的意义.最近,由于需要做一个计算器,而我发现以前的程序功能已经足够强大了,我把以前的代码做了一个小小的改动,用BCB做了一个图形界面,于是现在你所看到的公式计算器就诞生了。
由于各种实际的原因,我不便于公布该程序现在的源代码.如果确实需要,请参考http://blog.csdn.net/shaohui/archive/2004/11/05/168323.aspx, 核心的代码我没有作一行改动,只是做了个图形界面,增加使用变量的功能.

该软件为绿色软件,不需要安装,也不会修改你的注册表。
你可以到以下地址下载该软件
http://www.freewebs.com/zhengsh/download/ExprCalc.rar
http://geostar.3322.org/soroc/downloads/ExprCalc.rar
公式计算器使用说明

1 该程序能够识别大多数数学运算符号
+ 加
- 减
* 乘
/ 除
^ 乘方开方
% 取余
注意:绝对值符号||不能够使用,有专门的函数fabs或者abs求绝对值
不能够用点号代替乘号例如1*2不能够写成1.2
2. 该程序能够识别大多数数学函数(29个)
|
函数名称
|
内部表示
|
说明
|
|
arcsin
|
A
|
反正弦
|
|
arccos
|
B
|
反余弦
|
|
arctan
|
C
|
反正切
|
|
arcctg
|
D
|
反余切
|
|
arcsec
|
E
|
反正割
|
|
arccsc
|
F
|
反余割
|
|
arctg
|
C
|
反余切
|
|
asin
|
A
|
arcsin
|
|
acos
|
B
|
arccos
|
|
atan
|
C
|
反正切
|
|
actg
|
D
|
反余切
|
|
asec
|
E
|
反正割
|
|
acsc
|
F
|
反余割
|
|
fabs
|
G
|
绝对值
|
|
exp
|
H
|
指数函数
|
|
cos
|
I
|
余弦
|
|
ctg
|
J
|
余弦
|
|
tan
|
K
|
正切
|
|
sec
|
L
|
正割
|
|
csc
|
M
|
余割
|
|
cth
|
N
|
双曲正割
|
|
sin
|
O
|
正弦
|
|
abs
|
G
|
绝对值
|
|
tg
|
K
|
正切
|
|
ln
|
P
|
自然对数
|
|
sh
|
Q
|
双曲正弦
|
|
th
|
R
|
双曲余弦
|
|
ch
|
S
|
双曲余割
|
|
log
|
T
|
对数
|
3 。 可以识别常数e和圆周率pi
不区分大小写,也就是说你写成pi,PI,pI,Pi都是等效果的
4 .可以识别省略的乘号
乘号在大多数情况下都可以省略.
列如:3*(3+4) 可以这样输入 3(3+4)
3*sin(pi/4) 可以这样输入 3sin(pi/4);
(3+4)*(3+4) 可以这样输入(3+4)(3+4)
5.函数的输入可以象数学上一样省略括号(以任意数为底数的对数函数除外)
列如:sin(pi) 可以这样输入 sinpi
6.小于1的小数可以省略小数点前的0
列如:0.123 可以这样输入 .123
0.2 * 0.3 可以这样输入 .2*.3
7.对数函数的输入格式log(底数,真数),ln真数
如:log(e,3.3)
lne
8.可以识别正负号(不是加减)
如:-3+4
+4+(-4+4)
9.能够识别几乎所有的合法的运算符号的函数的组合
如:sin cos tan sin(pi/4)
log(e,cos(pi/4))
log(lne^2,log(10,log(e,e^100)))
10.支持用户自定义变量(新功能)
注意
为了便于和函数相互区别,用户自己定义的变量都要求以下划线‘_’开头。
变量只能够包含下划线和字母,不能够有数字和其它字符.
变量的长度至少是2,以免变量名称重复。
变量名称不能够相互包含:例如你已经定义了一个叫_varible的变量,你就不能够再定义一个变量叫_var
使用举例
求方程ax2+bx+c=0的解
利用公式
X1=(-b+(b^2-4ac)^(1/2))/(2a)
首先定义变量
_a,_b,_c(因为变量必须以_开头)
然后可以这样
(-_b+(_b^2-4_a_c)^(1/2))/(2_a)

OK! 功能很强大,也很简单吧。
11.括号
括号包括大中小3种,它们的功能一样,可以混用,根据个人不同的习惯自己选用,但是在使用的时候请注意要配对使用。
括号内部必须要有表达式,像下面这样的式子是不对的
(1+2)*((+3+4)()(6))
括号可以多重嵌套,例如下面的式子是合法的
(1+2)((((((((((((1))))))))))))
在以下情况你需要使用括号
a.改变运算顺序
b.使用函数时候
c.当你不确定各种运算符号的优先级的时候,可以使用括号改变优先级
例如2*30%4,当你不确定计算机是先计算那一个的时候,可以加上括号
(2*30)%4,或者是这样2*(30%4)
在以下情况你可以省略括号
a.函数的表达式很简单
如ln(1)可以写成ln1, sin(pi)可以写成sinpi
PS:当发布完了这个程序了以后我才发现有些不妥当,因此再补充一些,这些都不是什么新的东西,都可以在以前的程序的说明中能够找到,但是这里再次说明一下我觉得还是有必要的。
按照重要与否的顺序来,有的部分可能你不是很感兴趣。
该软件现在存在的问题
1.对于错误的表达式的处理还需要更一步改进
对于表达式的语法识别上还没有发现什么问题,但是在处理具体表达式的内容的时候,程序还不够健全。没有对所有的错误都做处理。这并不难,但是麻烦了点。
例如:
arcsin100
没有任何语法错误,但是对于函数arcsin的自变量的值应该在[-1,1].这样的情况我并没有全部都去仔细的去判断。这不是太大的问题,知道有这个问题就可以了。
2.提示信息有时候还不够准确
如果你输入 *9 (这当然是不合法的输入)
系统虽然能够检查出语法错误,但是提示信息不正确.
提示信息: 左括号后(不能有运算符号
显然你没有输入左括号,出现该提示的原因是:为了能够正确处理诸如+3+4,-3*5的表达式,程序对于你输入的表达式都默认地加上了左括号.
3.个别表达式不能够正确识别
尽管已经做了很多的努力,但是还是不能识别形如下列的表达式
sin-3
系统认为这是错误输入,可以改成sin(-3)输入