0分,过了样例但不知道哪里有问题
#include<iostream>
#include<string>
#include<stdio.h>
#define db double
using namespace std;
int main(){
string s;
cin>>s;
char c;
if(s[0]!='-')
s='+'+s;
db x=0,k=0;
int D=s.find('=');
if(s[D+1]!='-')
s.insert(D+1,"+");
for(int i=0;i<s.size();i++)
if(s[i]>='a'&&s[i]<='z'){
c=s[i];
int pos=i-1;
while(s[pos]>='0'&&s[pos]<='9')
pos--;
pos+=1;
int t=stoi(s.substr(pos,i));
if(s[pos-1]=='+'&&pos<D)
x+=t;
else if(s[pos-1]=='+'&&pos>D)
x-=t;
else if(s[pos-1]=='-'&&pos<D)
x-=t;
else if(s[pos-1]=='-'&&pos>D)
x+=t;
}
for(int i=0;i<s.size();i++)
if(s[i]>='a'&&s[i]<='z'){
int pos=i-1;
while(s[pos]>='0'&&s[pos]<='9')
pos--;
pos+=1;
int t=stoi(s.substr(pos,i));
s.erase(pos-1,i+1);
i=pos-1;
}
for(int i=0;i<s.size();i++)
if(s[i]=='+'||s[i]=='-'){
int pos=i+1;
while(pos<s.size()&&s[pos]>='0'&&s[pos]<='9')
pos++;
if(pos==s.size())
pos++;
int t=stoi(s.substr(i+1,pos));
if(s[i]=='+'&&pos<D)
k-=t;
else if(s[i]=='+'&&pos>D)
k+=t;
else if(s[i]=='-'&&pos<D)
k+=t;
else if(s[i]=='-'&&pos>D)
k-=t;
}
cout<<c<<"=";
printf("%.3lf",k);
return 0;
}