计算表达式
问题描述
表达式的形式如:3+5*6-4 其中, 运算数为一位非负整数(0~9),运算符为 +、-、* 三种,且运算符没有优先级的区分,一律自左向右计算。 如上例的计算过程为:3+5*6-4=8*6-4=48-4=44
输入说明
一行,即表达式字符串(长度小于100),以小数点'.'结束
输出说明
一个整数,即表达式的计算结果(结果在-20000至20000之间)。
输入样例
3+5*6-4.
输出样例
44
提示
假定表达式中只有0~9和+、-、*,以及作为结束标志的点之外,没有任何其它字符。
菜鸟求教,,不要很复杂的代码,因为看不懂
[解决办法]
给你个基本算法吧
1、接收输入的字符串。
2、查询特定的字符。例如+、-、*和.
3、提取操作数
4、输出计算结果
[解决办法]
- C/C++ code
#include <iostream.h>void main(){ char c[100]; int nRt = 0; cin>>c; char* p = c; if (p && '.' != *p) { nRt = *p - '0'; p++; } while (p && '.' != *p) { char opt = *p; p++; int n = *p - '0'; p++; if ('+' == opt) { nRt = nRt + n; } else if ('-' == opt) { nRt = nRt - n; } else if ('*' == opt) { nRt = nRt * n; } } cout<<nRt<<endl;}
[解决办法]
你可以用yacc和lex语法词法分析器,相当简单。