0pts求助
查看原帖
0pts求助
1118893
Dark_Star楼主2023/11/24 19:42
#include<bits/stdc++.h>
#define debug cout<<"debug"
using namespace std;
bool f1[1001],fx1[1001],f2[1001],fx2[1001];int a1[1001],a2[1001];
/*f:前缀加还是减 fx:是否有未知数读入 a:数值(绝对值) 1:方程等号左 2:方程等号右
例:2x+3=7拆解为
f1[1]=1;fx1[1]=1;a1[1]=2;
f1[2]=1;fx1[2]=0;a1[2]=3;
f2[1]=1;fx2[1]=0;a2[1]=7;*/
int main()
{
	f1[1]=1;int k=1,xs=0,as=0;char c,x;
	while(cin>>c){
		if(c=='=')break;
		if(c=='+')f1[++k]=1;
		if(c=='-')if(k==1&&!a1[k])f1[k]=0;else f1[++k]=0;
		if(c>='0'&&c<='9')a1[k]=(a1[k]<<1)+(a1[k]<<3)+(c^48);
		if(c>='a'&&c<='z'){x=c;fx1[k]=1;}
	}
	for(int i=1;i<=k;i++)if(fx1[k])if(f1[k])xs+=a1[k];else xs-=a1[k];else if(f1[k])as-=a1[k];else as+=a1[k];
	k=1;f2[1]=1;
	while(cin>>c){
		if(c=='\0')break;
		if(c=='+')f2[++k]=1;
		if(c=='-')if(k==1&&!a2[k])f2[k]=0;else f2[++k]=0;
		if(c>='0'&&c<='9')a2[k]=(a2[k]<<1)+(a2[k]<<3)+(c^48);
		if(c>='a'&&c<='z'){x=c;fx2[k]=1;}
	}
	for(int i=1;i<=k;i++)if(fx2[k])if(f2[k])xs-=a2[k];else xs+=a2[k];else if(f2[k])as+=a2[k];else as-=a2[k];
	double s=as*1.0/xs;
	if(s==-0.0)s=0;
	printf("%c=%.3lf",x,s);
	return 0;
}
2023/11/24 19:42
加载中...