大体思路说一下,就是把未知数全部移到左边,常数移到右边,然后相除
#include<bits/stdc++.h>
#define int long long
using namespace std;
int num,a,b,flag;
string ch;
char c;
signed main(){
cin>>ch;
for(int i=0;i<ch.size();i++){
if(i==0&&ch[i]>='0'&&ch[i]<='9'){
int n;
for(int j=i;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
num*=10;
num+=ch[j]-'0';
}
if(ch[n]>='a'&&ch[n]<='z') a+=num,i=n,c=ch[n];
else b-=num,i=n-1;
num=0;
}else if(i==0&&ch[i]>='a'&&ch[i]<='z') a+=1,c=ch[i];
else if(ch[i]>='a'&&ch[i]<='z'){
if(num==0) num=1;
c=ch[i];
a+=num;
num=0;
}else if(ch[i]=='+'){
int n;
for(int j=i+1;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
num*=10;
num+=ch[j]-'0';
}
if(ch[n]>='a'&&ch[n]<='z'){
if(num==0) num=1;
a+=num,i=n,c=ch[n];
}else b-=num,i=n-1;
num=0;
}else if(ch[i]=='-'){
int n;
for(int j=i+1;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
num*=10;
num+=ch[j]-'0';
}
num*=-1;
if(num==0) num=-1;
if(ch[n]>='a'&&ch[n]<='z'){
if(num==0) num=-1;
a+=num,i=n,c=ch[n];
}else b-=num,i=n-1;
num=0;
}else if(ch[i]=='='){
flag=i;
break;
}
}
for(int i=flag+1;i<ch.size();i++){
if(i==flag+1&&ch[i]>='0'&&ch[i]<='9'){
int n;
for(int j=i;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
num*=10;
num+=ch[j]-'0';
}
if(ch[n]>='a'&&ch[n]<='z') a-=num,i=n,c=ch[n];
else b+=num,i=n-1;
num=0;
}else if(i==flag+1&&ch[i]>='a'&&ch[i]<='z') a-=1,c=ch[i];
else if(ch[i]>='a'&&ch[i]<='z'){
c=ch[i];
if(num==0) num=1;
a+=num;
num=0;
}else if(ch[i]=='+'){
int n;
for(int j=i+1;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
if(j==ch.size()-1) n=ch.size();
num*=10;
num+=ch[j]-'0';
}
if(ch[n]>='a'&&ch[n]<='z'){
if(num==0) num=1;
a-=num,i=n,c=ch[n];
}else b+=num,i=n-1;
num=0;
}else if(ch[i]=='-'){
int n;
for(int j=i+1;j<ch.size();j++){
if(!(ch[j]>='0'&&ch[j]<='9')){
n=j;
break;
}
if(j==ch.size()-1) n=ch.size();
num*=10;
num+=ch[j]-'0';
}
num*=-1;
if(num==0) num=-1;
if(ch[n]>='a'&&ch[n]<='z') a-=num,i=n,c=ch[n];
else b+=num,i=n-1;
num=0;
}
}
cout<<c<<"=";
if(b==0) cout<<"0.000";
else printf("%.3f",b*1.0/a*1.0);
return 0;
}