【洛谷】P1022 计算器的改良-全AC题解

2019-10-29 16:01:24来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

【洛谷】P1022 计算器的改良-全AC题解

#include <iostream>
#include <cstring>
#include <iomanip>
using namespace std;

int main()
{
    string str;
    cin>>str;
    int f=1,d=1;
    char c;

    long double k=0,b=0,num=0,ans;

    for(int i=0;i<str.length();i++)
    {
        if(str[i]>='0' && str[i]<='9')
            num=num*10+str[i]-48;

        if(str[i]>='a' && str[i]<='z')
        {
            if(i==0) k=1;
            c=str[i];
            k=k+f*d*num;
            num=0;
        }

        if(str[i]=='-')
        {
            b=b+f*d*num;
            num=0;
            f=-1;
        }

        if(str[i]=='+')
        {
            b=b+f*d*num;
            num=0;
            f=1;
        }

        if(str[i]=='=')
        {
            b=b+f*d*num;
            f=1;
            num=0;
            d=-1;
        }
    }
    if(num!=0) b=b+f*d*num;
    ans =-1*b/k;

    if(ans==-0) ans=0;

    cout<<c<<"=";
    cout<<setiosflags(ios::fixed)<<setprecision(3)<<ans<<endl;


    return 0;
}

注意:eg a+2a=4  第一个a的k等于0 特例

   eg -2=6y 等号右边f要变


原文链接:https://www.cnblogs.com/shiye-shiye/p/11761582.html
如有疑问请与原作者联系

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:A - A Compatible Pair-biaobiao88

下一篇:二叉树的查找(前序、中序、后序、层序遍历)--biaobiao88