首页 > 其他 > 详细

洛谷 - P1022 - 计算器的改良 - 字符串格式转换

时间:2019-01-24 19:59:28      阅读:300      评论:0      收藏:0      [点我收藏+]

服了,居然还有+0.000和-0.000的不同,真的服了。

#include<bits/stdc++.h>
using namespace std;
#define ll long long

//a1x+b1=a2x+b2
double a1,b1,a2,b2;


int main(){
    string s;
    string s1;
    string s2;
    while(cin>>s){
        int n=s.length();

        char c;

        for(int i=0;i<n;i++){
            if(s[i]===){
                s1=s.substr(0,i);
                s2=s.substr(i+1,n);
                break;
            }
        }

        int n1=s1.length();
        int n2=s2.length();

        //cout<<s1<<" "<<s2<<endl;

        double cur=0;
        double flag=1;
        for(int i=0;i<n1;i++){
            if(s1[i]==-){
                b1+=flag*cur;
                flag=-1;
                cur=0;
            }
            else if(s1[i]==+){
                b1+=flag*cur;
                flag=+1;
                cur=0;
            }
            else if(isalpha(s1[i])){
                c=s1[i];
                if(cur==0)
                    cur=1;
                a1+=flag*cur;
                cur=0;
            }
            else{
                cur*=10;
                cur+=(s1[i]-0);
            }
        }

        b1+=flag*cur;
        flag=1;
        cur=0;

        //cout<<a1<<" "<<b1<<endl;

        for(int i=0;i<n2;i++){
            if(s2[i]==-){
                b2+=flag*cur;
                flag=-1;
                cur=0;
            }
            else if(s2[i]==+){
                b2+=flag*cur;
                flag=+1;
                cur=0;
            }
            else if(isalpha(s2[i])){
                c=s2[i];
                if(cur==0)
                    cur=1;
                a2+=flag*cur;
                flag=+1;
                cur=0;
            }
            else{
                cur*=10;
                cur+=(s2[i]-0);
            }
        }

        b2+=flag*cur;
        flag=1;
        cur=0;

        //cout<<a2<<" "<<b2<<endl;

        //ax=b
        double a=a1-a2;
        double b=b2-b1;

        double ans=b/a;
        if(fabs(ans)<1e-6)
            ans=0;
        printf("%c=%.3f\n",c,ans);
    }

}

 

洛谷 - P1022 - 计算器的改良 - 字符串格式转换

原文:https://www.cnblogs.com/Yinku/p/10316423.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!