表达式求值(无括号、无空格、每个数0-9、有运算符优先级)

来源:互联网 发布:淘宝入驻 编辑:程序博客网 时间:2024/05/21 06:56
/*表达式求值(无括号、无空格、每个数0-9、有运算符优先级) 简单四则运算问题描述:输入一个只包含个位数字的简单四则运算表达式字符串,计算该表达式的值注1、表达式只含 +, -, *, / 四则运算符,不含括号2、表达式数值只包含个位整数(0-9),且不会出现0作为除数的情况3、要考虑加减乘除按通常四则运算规定的计算优先级4、除法用整数除法,即仅保留除法运算结果的整数部分。比如8/3=2。输入表达式保证无0作为除数情况发生5、输入字符串一定是符合题意合法的表达式,其中只包括数字字符和四则运算符字符,除此之外不含其它任何字符,不会出现计算溢出情况要求实现函数:int calculate(int len,char *expStr)【输入】  int len: 字符串长度;char *expStr: 表达式字符串;【输出】  无【返回】  计算结果示例1)  输入:char *expStr = “1+4*5-8/3”函数返回:192)  输入:char *expStr = “8/3*3”函数返回:6*/#include<bits/stdc++.h>using namespace std;const int N=100000000;int num[N];int main(){    string a;    while(cin>>a)    {        memset(num,0,sizeof(num));        int cnt=0;        num[0]=a[0]-'0';        for(int i=1; i<a.size(); i++)        {            if(a[i]=='+')            {                num[++cnt]=a[++i]-'0';            }            else if(a[i]=='-')            {                num[++cnt]=0-(a[++i]-'0');            }            else if(a[i]=='*')            {                num[cnt]*=a[++i]-'0';            }            else if(a[i]=='/')            {                num[cnt]/=a[++i]-'0';            }        }        int sum=0;        for(int i=0; i<=cnt; i++)            sum+=num[i];        cout<<sum<<endl;    }    return 0;}
原创粉丝点击