读书人

计算表达式,该怎么解决

发布时间: 2012-03-18 13:55:39 作者: rapoo

计算表达式
问题描述
表达式的形式如: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语法词法分析器,相当简单。

读书人网 >C语言

热点推荐