LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 814|回复: 5

请教一个算法问题!!!

[复制链接]
发表于 2002-12-30 22:36:17 | 显示全部楼层 |阅读模式
想将一个用数组保存的ASCII字符序列转化成对应的数字。
例如
输入
23
转化成23
输入23.345
转化成23.345
。。。。。。。。。。
我的数组元素类型为CHAR(字符型)而且我知道这种情况下数组是以对应的
ASCII码存放的?
请教各位高手有没有快速转化成数字的算法?
谢谢
发表于 2002-12-30 22:38:46 | 显示全部楼层
宽字符函数 普通C函数 描述
wcstod() strtod() 把宽字符的初始部分转换为双精度浮点数
wcstol() strtol() 把宽字符的初始部分转换为长整数
wcstoul() strtoul() 把宽字符的初始部分转换为无符号长整数
 楼主| 发表于 2002-12-30 23:28:46 | 显示全部楼层

谢了

可能我的意思没表达清楚
我的本意是想写一个很简单的计算器
用到了堆栈
分别存放操作数和运算符实现表达式的求值(数据结构上有不记得了好像是转化成逆波兰表达式后再运算)
例如输入
1+2+6+8/2=
输出13
后来觉得太这个程序太简单了
想实现多位数(在double float位数范围内)的运算并且带小数位
如输入1.2+5+55886.3-85
(我用数组存放每个字符因此想到了把连续的“数字字符”转化成真正对应的数字。如数组存放a[0]=1,a[1]=3实际上等于13)
等类似的表达式
该如何实现?有更好的请不吝赐教。
发表于 2002-12-31 13:29:45 | 显示全部楼层

re:算符优先法

做这种简单的四则运算其实用算符优先法就可,可单个字符逐个转换为0-9,而后
      result=result*10+newch;
发表于 2002-12-31 13:37:18 | 显示全部楼层

re:注意小数点的出现

补充:注意小数点的出现后情况的处理
s=1;
do
s*=0.1;
result+=newch*s;
while(..)
 楼主| 发表于 2002-12-31 15:35:42 | 显示全部楼层

3q

谢谢楼上的几位兄弟
我已经搞定了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表