显示代码纯文本
#include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
#define MENA MenaS
using namespace std;
string s;
string s1="",s2="";
int coe=0;//参数的系数,在等号左边
int sum=0;//常数的和,在等号右边
bool flag=true;
int tmp;
int len;
char a;
double ans;
int Main()
{
freopen("computer.in","r",stdin);
freopen("computer.out","w",stdout);
ios::sync_with_stdio(false);
cin>>s;
int l=0,r=s.size();
len=s.size();
while(s[l]!='=') s1+=s[l],l++;
while(s[r]!='=') s2=s[r]+s2,r--;
//系数和参数在等号左边,常数移到等号右边
for(int i=0;i<=l;i++)//等号左边
{
if(s[i]>='0' && s[i]<='9') tmp=tmp*10+s[i]-'0';
if(s[i]>='a' && s[i]<='z') a=s[i],coe+=(tmp==0?1:tmp)*(flag?(1):(-1)),tmp=0;
if(s[i]=='+' || s[i]=='-' || s[i]=='=')
{
if(s[i-1]>='0' && s[i-1]<='9') sum+=tmp*(flag?(-1):(1));
tmp=0;
if(s[i]=='-') flag=0;else flag=1;
}
}
tmp=0;
for(int i=l+1;i<len;i++)//等号右边
{
if(s[i]>='0' && s[i]<='9') tmp=tmp*10+s[i]-'0';
if(s[i]>='a' && s[i]<='z') a=s[i],coe+=(tmp==0?1:tmp)*(flag?(-1):(1)),tmp=0;
if(s[i]=='+' || s[i]=='-')
{
if(s[i-1]>='0' && s[i-1]<='9') sum+=tmp*(flag?(1):(-1));
tmp=0;
if(s[i]=='-') flag=0;else flag=1;
}
}
sum+=(flag?tmp:tmp*(-1));//不能忽略最后一个常数
ans=(double)sum/(double)coe;
if(ans==0) ans=0;//特判
printf("%c=%.3lf",a,ans);
return 0;
}
int main(){;}
int MENA=Main();