求助
查看原帖
求助
378741
sgz566楼主2021/10/22 23:07

WA了,但不知道怎么改,求调

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
using namespace std;
string s;
char op='+',u;
int a,l,r;
int main()
{
	cin>>s;
	int n=s.length();
	for(int i=0;i<n;i++)
	{
		if(s[i]=='=')
		{
			a=i;
			break;
		}
	}
	int num=0;
	for(int i=0;i<a;i++)
	{
		if(i==0&&s[i]=='-')
		{
			op='-';
			i++;
		}
		else if(s[i]=='+'||s[i]=='-')
		{
			//cout<<op<<num<<" "<<l<<" "<<r<<endl;
			if(op=='+')r-=num;
			else r+=num;
			num=0;
			op=s[i];
		}
		else if(s[i]>='0'&&s[i]<='9')
		{
			num*=10;
			num+=s[i]-'0';
		}
		else
		{
			//cout<<op<<num<<" "<<l<<" "<<r<<endl;
			if(!num)num=1;
			u=s[i];
			if(op=='+')l+=num;
			else l-=num;
			num=0;
		}
	}
	if(s[a-1]>='0'&&s[a-1]<='9')
	{
		//cout<<op<<num<<" "<<l<<" "<<r<<endl;
		if(op=='+')r-=num;
		else r+=num;
	}
	num=0;
	op='+';
	for(int i=a+1;i<n;i++)
	{
		if(i==a+1&&s[i]=='-')
		{
			op='-';
			i++;
		}
		else if(s[i]=='+'||s[i]=='-')
		{
			//cout<<op<<num<<" "<<l<<" "<<r<<endl;
			if(op=='+')r+=num;
			else r-=num;
			num=0;
			op=s[i];
		}
		else if(s[i]>='0'&&s[i]<='9')
		{
			num*=10;
			num+=s[i]-'0';
		}
		else
		{
			//cout<<op<<num<<" "<<l<<" "<<r<<endl;
			if(!num)num=1;
			u=s[i];
			if(op=='+')l-=num;
			else l+=num;
			num=0;
		}
	}
	//cout<<l<<" "<<r<<endl; 
	printf("%c=%.3lf",u,double(1.0*r/l)); 
	return 0;
}
2021/10/22 23:07
加载中...