特别考验细节的模拟。(绕晕!)
主要是移项,y=kx
- 坑1:未知数系数为1或-1。
- 坑2:最后一个常数项漏存。
- 坑3:-0.000。(0/负数=-0)
正在做的人主要以下几点
1.a和1a是等价的….-1和-a也是
2.如果你要改符号的时候,要把没有符号的项加上’+’
3.可以在字符串末尾加上如’#’之类的符号表示是否已经读完
Code
#include<cstdio>
#include<cstring>
int main()
{
char c,s[505];
int x=0,y=0,a=0,f=1,f1=1,i;
double ans;
scanf("%s",s);
for (i=0;i<strlen(s);i++)
{
if (s[i]>='0'&&s[i]<='9')
a=a*10+s[i]-48;
if (s[i]=='-')
{
y+=-1*f*f1*a;
f=-1;
a=0;
}
if (s[i]=='+')
{
y+=-1*f*f1*a;
f=1;
a=0;
}
if (s[i]=='=')
{
y+=-1*f*f1*a;
f1=-1;
f=1;
a=0;
}
if (s[i]>='a'&&s[i]<='z')
{
c=s[i];
if (a) x+=f*a*f1; else x+=f*f1;
f=1;
a=0;
}
}
y+=-1*f*f1*a;
ans=1.0*y/x;
if (ans<=0.000&&ans>-0.0005) printf("%c=0.000",c);
else printf("%c=%.3lf",c,ans);
return 0;
}