就一个AC,自己测试没问题,哪位大佬帮帮忙。
查看原帖
就一个AC,自己测试没问题,哪位大佬帮帮忙。
983702
lrj3247楼主2023/6/27 15:54

//第一次求助,整体思路是先移项,然后将系数相加减,最后相除

#include <bits/stdc++.h>
using namespace std;
char a[1001],l[5001],r[5001],last,s;
int n,sum,z;
double num;
int main()
{
	cin.get(a,1001);
	for(int i = 0 ; i<strlen(a) ; i++)
	{
		if(a[i]=='=')
		{
			n=i;
			if(a[0]!='-')
			{
			l[0]='+';
			for(int j = 1 ;j<=i ;j++ )
				l[j]=a[j-1];
			}
	    	else
		   for(int j = 0 ;j<i ;j++ )
				l[j]=a[j];
		   if(a[i+1]!='-')
		   {
		    r[0]='+';
	     	s++;
	    	}
			for(int j = i+1 ;j<=strlen(a) ;j++ )
				{
				   r[s]=a[j];
				   s++;
				}
		break;
		}
	}
	for(int i = 0 ; i<strlen(l) ; i++)
	{
		if(48<=l[i]&&l[i]<=57&&(l[i+1]<=96||l[i+1]>=123))
		{
		    int d=strlen(r);
			if(l[i-1]=='-')
			{
            
				r[d]='+';
				r[d+1]=l[i];
				l[i-1]=' ';
				l[i]=' ';
			}
			else
			{
				r[d]='-';
				r[d+1]=l[i];
				l[i-1]=' ';
				l[i]=' ';
			}
		}
	}
	for(int i =0 ; i<strlen(r) ; i++)
	{
		if(97<=r[i]&&r[i]<=122)
		{
			int d=strlen(l);
			if(48<=r[i-1]&&r[i-1]<=57)
            
			{
				if(r[i-2]=='-')
				{
					l[d]='+';
					l[d+1]=r[i-1];
					l[d+2]=r[i];
					r[i-2]=' ',r[i-1]=' ',r[i]=' ';


				}
				else
				{
					l[d]='-';
					l[d+1]=r[i-1];
					l[d+2]=r[i];
					r[i-2]=' ',r[i-1]=' ',r[i]=' ';
				}
			}
			else if(r[i-1]=='+')
			{
				l[d]='-';
				l[d+1]=r[i];
				r[i-1]=' ',r[i]=' ';
			}
			else if(r[i-1]=='-')
			{
				l[d]='+';
				l[d+1]=r[i];
				r[i-1]=' ',r[i]=' ';
			}
		}
	}
	for(int i = 0 ; i<strlen(l) ; i++)
	{
		if(97<=l[i]&&l[i]<=122)
		{
			
			if(48<=l[i-1]&&l[i-1]<=57)
			{
			 if(l[i-2]=='+')
	    	{
	    		sum+=l[i-1]-48;
		    }
	    	else if(l[i-2]=='-')
	    	{
	    		sum-=l[i-1]-48;
	    	}
	    	if(97<=l[i]&&l[i+1]<=122)
	    		last=l[i];
		   	}
		    else if(l[i-1]=='+')  	
            sum++;
            else if(l[i-1]=='-')
            sum--;
			last=l[i];
		} 
	}
	for(int i =0 ; i<strlen(r) ; i++)
	{
		if(48<=r[i]&&r[i]<=57)
		{
		   	if(r[i-1]=='+')
	    	{
	    		z+=r[i]-48;
		    }
	    	else if(r[i-1]=='-')
	    	{
	    		z=z-(r[i]-48);
	    	}
		}
	}
	cout<<last<<"=";
	num=z*1.000/sum;
	cout<<fixed<<setprecision(3)<<num;
	return 0;
 }
2023/6/27 15:54
加载中...