1. 程式人生 > >洛谷 - P1022 - 計算器的改良 - 字符串格式轉換

洛谷 - P1022 - 計算器的改良 - 字符串格式轉換

har nbsp ace color bre int subst def div

服了,居然還有+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 - 計算器的改良 - 字符串格式轉換