赞 | 13 |
VIP | 118 |
好人卡 | 28 |
积分 | 12 |
经验 | 35779 |
最后登录 | 2017-7-6 |
在线时间 | 1564 小时 |
- 梦石
- 0
- 星屑
- 1185
- 在线时间
- 1564 小时
- 注册时间
- 2008-7-30
- 帖子
- 4418
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 DeathKing 于 2011-7-31 14:33 编辑
逆波兰表示法计算器(Ruby)
逆波兰表示法是波兰数学家杨·武卡谢维奇(Jan Łukasiewicz)的研究成果。他使用后缀表示法来表示四则运算,不但不需要括号,而且只要知道运算符需要几个操作数就不会引起歧义。例如(后缀表示法即为逆波兰表示法):
前缀表示法:* + 1 2 - 4 5
中缀表示法:( 1 + 2 ) * ( 4 - 5)
后缀表示法:1 2 + 4 5 - *
请实现这样一个计算器,他能计算任何一个有效的逆波兰表示法表达式的值。对不合法的表达式,输出“ERROR”。
合法的表达式满足下面的要求:
- 只能出现以下符号 {" ","/n","+","-","*","/"}∪R∪{PI,E} ,即只能包含空格符、换行符、四则运算符、有效的实数、两个常量标识符;
- 符号{"+","-","*","/"} 都是二元操作符,需要两个操作数;
- 常量{PI,E} 的取值参考对应的Math::PI,Math::E ;
- 输入文件中每行都是一个逆波兰表达式,每个操作数或操作符之间用空格符分隔;
- 对于整数除法,结果是小数,则保留;
- 输入文件文件名总是 rpn_input.txt ;
- 输出文件文件名总是 rpn_output.txt ;
01. 5 3 - 8 5 + /
02. 10 5 / 2 +
03. 8 * 7 + 5
04. ( 9 - 8 ) / 1
01. 0.15384615384615385
02. 4
03. ERROR
04. ERROR
请按照 yourname_rpb.rb 的格式来提交文件,其中请将 yourname 替换为可作为您名称标识的有效英文字符。
我是被她们拉过来凑热闹的~~~
|
|