未知数系数为1的情况没错,-0没错,所以到底错哪了!!!
#include<bits/stdc++.h>
using namespace std;
bool flag=false,p=false;
int mi(int n){
if(n==0) return 1;
int num=1;
for(int i=1;i<=n;i++){
num=num*10;
}
return num;
}
int x=0,y=0;
int sum=0;
char c;
string a,b;
int main(){
cin>>b;
if(b[0]!='-'){
for(int i=1;i<=b.size();i++){
a[i]=b[i-1];
}
a[0]='+';
}
else a=b;
bool xx=false;
for(int i=b.size();i>=0;i--){
int j=i;
if(a[i]=='='){
flag=true;
if(a[i+1]!='-'){
if(xx==true){
x=x-sum;
xx=false;
}
else y=y+sum;
p=false;
}
}
else if(a[i]=='+'){
if(flag==true){
if(xx==true){
x=x+sum;
xx=false;
}
else y=y-sum;
}
else{
if(xx==true){
x=x-sum;
xx=false;
}
else y=y+sum;
}
p=false;
}
else if(a[i]=='-'){
if(flag==true){
if(xx==true){
x=x-sum;
xx=false;
}
else y=y+sum;
}
else{
if(xx==true){
x=x+sum;
xx=false;
}
else y=y-sum;
}
p=false;
}
else if(a[i]>='a' && a[i]<='z'){
xx=true;
c=a[i];
}
else if(a[i]>='0' && a[i]<='9' && p==false){
int ans=0;
sum=0;
while(a[j]>='0' && a[j]<='9'){
sum=sum+(a[j]-'0')*mi(ans);
j--;
ans++;
}
p=true;
}
}
double w=1.0*y/x;
cout<<c<<"=";
if(w==-0) w=0;
printf("%.3lf",w);
return 0;
}
//-6+12x=0