永发信息网

输入包含加减乖除和括号的合法表达,求值c语言

答案:2  悬赏:70  手机版
解决时间 2021-03-20 05:59
输入包含加减乖除和括号的合法表达,求值c语言
最佳答案
类似于计算器,可计算小数,输出结果保存小数点后两位:
#include
#include
#include
#include
using namespace std;
const int maxn=1000+10;
char a[maxn];
char judge(char a,char b)
{
    if(a=='+'||a=='-')
    {
        if(b=='*'||b=='/'||b=='(')
            return '<';
        return '>';
    }
    if(a=='*'||a=='/')
    {
        if(b=='(')
            return '<';
        return '>';
    }
    if(a=='('||a=='=')
    {
        if((a=='('&&b==')')||(a=='='&&b=='='))
            return '=';
        return '<';
    }
}
double cal(double b,char c,double a)
{
    if(c=='+') return a+b;
    if(c=='-') return a-b;
    if(c=='/') return a/b;
    if(c=='*') return a*b;
}
double solve()
{
    stackc;
    stacknum;
    c.push('=');
    char s[25],t_c;
    int i,j,len=strlen(a),sizes=0;
    double num1,num2;
    bool flag=0;
    for(i=0; i     {
        if((a[i]>='0'&&a[i]<='9')||a[i]=='.')
        {
            s[sizes++]=a[i];
            s[sizes]='\0';
            flag=1;
            continue;
        }
        if(flag)
        {
            sizes=0;
            num.push(atof(s));
            flag=0;
        }
        t_c=judge(c.top(),a[i]);
        if(t_c=='<')
        {
            c.push(a[i]);
        }
        else if(t_c=='=')
        {
            c.pop();
        }
        else if(t_c=='>')
        {
            num1=num.top(),num.pop();
            num2=num.top(),num.pop();
            num.push(cal(num1,c.top(),num2));
            c.pop();
            i--;
        }
    }
    return num.top();
}
int main()
{
    scanf("%s",a);
    int len=strlen(a);
    a[len]='=',a[len+1]='\0';
    printf("%.2lf\n",solve());
    return 0;
}输入:5*(1.2+3/5+0.2)-1
输出:9.00
全部回答
2+(2-2*2)/2= 这样的吧?括号嵌套就不做了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
孕妇喉咙有泡泡吃什么能快速好都快一个月没有
上海数字出版工资一般多少,
these those their在句子中怎么用?
单选题美丽的“水立方”是北京奥运会游泳馆,
陌陌上怎样分享我来到哪里了,向附近的朋友问
建筑设计中什么是维护结构
寻求足X动漫
got7告白颂的韩语歌词
一篇描写人物必须抓住典型事例及人物特征的50
江苏到湖南江华坐哪个火车
请问,强烈抗议妖族的便宜飞行器难看!,妖族的
汇源大酒店东门我想知道这个在什么地方
三生公司现在还能做吗
单选题Kellywas______inscience,shewan
饭 是什么意思?
推荐资讯
谁申购了博时新兴成长呢``050009,我申购了两
稿件被拒,很郁闷,编辑的权力是不是太大了
回国时,日本规定皮葙中可放买的烟吗
低手寂寞怎么死的
忆口香龙虾蟹煲(岳阳店)这个地址在什么地方,
元素的性质呈周期性变化的根本原因为什么是元
萃华这牌子怎么样?
小西厨房在哪里啊,我有事要去这个地方
归字是什么偏旁
诺基亚N9从论坛里下的软件安装时为什么它说安
长安之星拉缸,是大修还是换发动机
在8万元SUV中,请问底盘减震且舒适度较高的是
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?