与测试点1输出结果(看着)一样,但是没过,32分,求帮助
查看原帖
与测试点1输出结果(看着)一样,但是没过,32分,求帮助
947916
yove楼主2024/10/17 18:45
#include<bits/stdc++.h>
using namespace std;
string s;
int main()
{
    //ios::sync_with_stdio(false);
    getline(cin,s);
    if(s[0]!='-') s='+'+s;
	int len = s.size();
    int i=0;
    int k1=0,k2=0;
    char c;
    for(i;i<len;i++)
    {
    	if(s[i]=='=') break;
    	if(s[i]!='-'&&s[i]!='+') continue;
    	int k=0; bool t=false;
    	for(int j=i+1;j<len;j++)
    	{
    		if(s[j]=='-'||s[j]=='+'||s[j]=='=') break;
    		if(s[j]>='0'&&s[j]<='9')
    		{
    			k=k*10+(s[j]-'0');
			}else
			{
				c=s[j];
				t=true;
			}
		}
		if(t)
		{
			if(s[i]=='+') k1+=k;
			else k1-=k;
		}else
		{
			if(s[i]=='+') k2+=k;
			else k2-=k;
		}
	}
	if(s[i+1]=='-') i+=1;
	for(i;i<len;i++)
	{
		if(s[i]!='-'&&s[i]!='+'&&s[i]!='=') continue;
		int k=0; bool t=false;
    	for(int j=i+1;j<len;j++)
    	{
    		if(s[j]=='-'||s[j]=='+') break;
    		if(s[j]>='0'&&s[j]<='9')
    		{
    			k=k*10+(s[j]-'0');
			}else
			{
				t=true;
			}
		}
		if(t)
		{
			if(s[i]=='='||s[i]=='+') k1-=k;
			else k1+=k;
		}else
		{
			if(s[i]=='='||s[i]=='+') k2-=k;
			else k2+=k;
		}
	}
	cout<<c<<"=";
	printf("%.3f",(k2*-1*1.0)/k1);
	return 0;
}
2024/10/17 18:45
加载中...