只对了#6,我错哪了
查看原帖
只对了#6,我错哪了
1045097
zhang_yi_xuan楼主2024/8/25 21:57
#include <bits/stdc++.h>
using namespace std; 
double x;
string s;
int main(){
	cin>>s;
	int a=0,b=0;
	char c;
	int num,ch=1,tn=1,t=1,f=1,sf;
	for(int i=0;i<s.size();i++){
		if(s[i]=='='){
			if(f==1){
				if(tn) b-=num*t;
				else a+=num*t;
			}
			if(f==2){
				if(tn) b+=num*t;
				else a-=num*t;
			}	
			if(f==3){
				if(tn) b+=ch*num;
				else a+=ch*num;
			} 
			num=0,ch=1,f=1,tn=1;t=-1;
		} 
		if(s[i]=='+'){
			if(f==1){
				if(tn) b-=num*t;
				else a+=num*t;
			}
			if(f==2){
				if(tn) b+=num*t;
				else a-=num*t;
			}	
			if(f==3){
				if(tn) b+=ch*num;
				else a+=ch*num;
			} 
			num=0,ch=1,f=1,tn=1;
		}
		if(s[i]=='-'){
			if(f==1){
				if(tn) b-=num*t;
				else a+=num*t;
			}
			if(f==2){
				if(tn) b+=num*t;
				else a-=num*t;
			}	
			if(f==3){
				if(tn) b+=ch*num;
				else a+=ch*num;
			} 
			num=0,ch=1,f=2,tn=1;
		}
		if(s[i]=='*'){
			if(f!=3) sf=f;
			ch*=num;
			num=0,f=3;
		}
		if(s[i]>='0'&&s[i]<='9'){
			num*=10,num+=s[i]-'0';
		} 
		if(s[i]>='a'&&s[i]<='z'){
			c=s[i],tn=0;
			if(num==0) num=1;	
		} 
	}
	if(f==1){
		if(tn) b-=num*t;
		else a+=num*t;
	}	
	if(f==2){
		if(tn) b+=num*t;
		else a-=num*t;
	}	
	if(f==3){
		if(tn) b+=ch*num;
		else a+=ch*num;
	}
	if(b==0) x=0;
	else x=double(b)/double(a);
	cout<<c<<"=";
	printf("%.3lf",x);
	return 0;
}

2024/8/25 21:57
加载中...