求调
查看原帖
求调
1328882
mitaRr_fu楼主2024/10/24 21:25
#include <bits/stdc++.h>
using namespace std;
string s;
double leftt,rightt,num,pd=0,r=1,zf=1;//pd:数字=1,字母=2;zf:正=1,负=2;
char x;
int main()
{
	cin>>s;
	int i;
	for(i=0;i<sizeof(s)-1;i++)
	{
		if(s[i]=='+'||s[i]=='-'||s[i]=='='||s[i]>='a'&&s[i]<='z')
		{
			if(s[i]>='a'&&s[i]<='z')
			{
				x=s[i];
				pd=2;
			}
			if(zf==2)
			{
				if(pd==1)
					rightt+=num*r;
				else if(pd==2)
					leftt-=num*r;
			}
			if(zf==1)
			{
				if(pd==1)
					rightt-=num*r;
				else if(pd==2)
					leftt+=num*r;
			}
			if(s[i]=='+') zf=1;
			if(s[i]=='-') zf=2;
			if(s[i]=='=') r=-1;
			pd=0;
			num=0;
		}
		if(s[i]>='0'&&s[i]<='9')
		{
			num+=num*10+s[i]-'0';
			pd=1;
		}
	}
	if(s[i]>='0'&&s[i]<='9')//特判字符串最后一位
	{
		num+=num*10+s[i]-'0';
		pd=1;
		if(zf==2)
		{
			if(pd==1)
				rightt+=num*r;
			else if(pd==2)
				leftt-=num*r;
		}
		if(zf==1)
		{
			if(pd==1)
				rightt-=num*r;
			else if(pd==2)
				leftt+=num*r;
		}
	}
	else if(s[i]>='a'&&s[i]<='z')
	{
		pd=2;
		if(zf==2)
		{
			if(pd==1)
				rightt+=num*r;
			else if(pd==2)
				leftt-=num*r;
		}
		if(zf==1)
		{
			if(pd==1)
				rightt-=num*r;
			else if(pd==2)
				leftt+=num*r;
		}
	}
	double ans=(rightt/leftt);
	printf("%c=%.3lf",x,ans);
	return 0;
}
2024/10/24 21:25
加载中...