$这是一道模拟题~(模拟题真的细节$
$对于读入的字符串分割。从左到右,按照符号分割。$
$统计出一个常数的和x,再统计出一个未知数的系数和yy。$
$相当于把常数和未知数都移到等式左边,相除加上负号就是答案,即-x / y即可。$
#include<bits/stdc++.h>
using namespace std;
char c;
int sign=1; //等号左边为正,右边为fu
int fh=1; //代表正负号
int num; //系数
int xnum; //未知数系数
int onum; //总体常数
int x; //未知数
int main(){
while(1){
c=getchar();
if(c=='\r'||c=='\n'){
onum+=num*sign*fh;
break;
}
else if(c=='='){
sign=-1; //等号右边变为负
onum+=num*fh;
num=0;
fh=1;
}
else if(c=='-'){
onum+=num*sign*fh; //加上前面的那个数
num=0;
fh=-1;
}
else if(c=='+'){
onum+=num*sign*fh;
num=0;
fh=1;
}
else if(isdigit(c)){
num=num*10+c-'0';
}else{
x=c;
if(num==0) xnum+=fh*sign;
else xnum+=num*fh*sign; //用+=因为可能有多个未知数项
num=0;
fh=0; //可以不加,因为下一个一定是正负号,会改变fh
}
}
double res=-(double(onum)/xnum); //相当于把常数和未知数都移到等式左边,相除加上负号就是答案
printf("%c=%.3lf\n",x,res);
}