0分求助
查看原帖
0分求助
877968
1233211234567a楼主2023/12/6 13:17
#include<bits/stdc++.h>
using namespace std;
int check(char a){
	if(a=='+'||a=='-'){
		return 1;
	}else{
		return 0;
	}
}
int choose(string a){
	for(int i=0;i<a.size();i++){
		char ch=a[i];
		if(ch>='a'&&ch<='z'){
			return 1;
        }
	}
	return 0;
}
 
double jia(double a,string b){
	char p=1;
	if(b[0]!='0'&&b[0]!='1'&&b[0]!='2'&&b[0]!='3'&&b[0]!='4'&&b[0]!='5'&&b[0]!='6'&&b[0]!='7'&&b[0]!='8'&&b[0]!='9'){
			if(b[0]=='+'){
				if(b.size()==1){
				    return 1;
				}
		        for(int i=b.size()-1;i>=1;i--){
			        a+=int(b[i]-48)*p;
			        p*=10;
		        }
			}else{
				if(b.size()==1){
				    return -1;	
			    }
		        for(int i=b.size()-1;i>=1;i--){
			        a-=int(b[i]-48)*p;
			        p*=10;
		        }
			}
	}else{
		for(int i=b.size()-1;i>=0;i--){
			a+=int(b[i]-48)*p;
			p*=10;
		}
	}
	return a;
}
int main(){
	string fc;
	long long ff=1;
	string st="";
	getline(cin,fc);
	vector <string> z,y;
	for(int i=0;i<fc.size();i++){
		if(i==fc.size()-1){
			st+=fc[i];
			y.push_back(st);
			st="";
			break;
		}
		if(fc[i]=='='){
			ff=2;
			z.push_back(st);
			st="";
			continue;
		}
		if(ff==1){
			if(check(fc[i])==1){
				z.push_back(st);
				st="";
			    st+=fc[i];
			}else{
				st+=fc[i];
			}
		}else{
			if(check(fc[i])==1){
				y.push_back(st);
				st="";
			    st+=fc[i];
			}else{
				st+=fc[i];
			}
		}
	}
	vector <string> f,c;
	char unknow=' ';
	for(int i=0;i<z.size();i++){
		if(choose(z[i])==1){
			unknow=z[i][z[i].size()-1];
			f.push_back(z[i]);
		}
	}
	for(int i=0;i<y.size();i++){
		if(choose(y[i])==1){
		    if(y[i][0]=='-'){
		    	y[i][0]='+';
		    }else if(y[i][0]=='+'){
				y[i][0]='-';
			}else{
				string cmp="-";
				for(int j=0;j<y.size();j++){
					cmp+=y[i][j-1];
				}
				y[i]=cmp;
			}
			f.push_back(y[i]);
		}
	}
	for(int i=0;i<y.size();i++){
		if(choose(y[i])==0){
			c.push_back(y[i]);
		}
	}
	for(int i=0;i<z.size();i++){
		if(choose(z[i])==0){
		    if(z[i][0]=='-'){
		    	z[i][0]='+';
			}else if(z[i][0]=='+'){
				z[i][0]='-';
			}else{
				string cmp="-";
				for(int j=0;j<z[i].size();j++){
					cmp+=z[i][j];
				}
				z[i]=cmp;
			}
			c.push_back(z[i]);
		}
	}
    for(int i=0;i<f.size();i++){
    	for(int j=0;j<f[i].size();j++){
    		if(f[i][j]!='0'&&f[i][j]!='1'&&f[i][j]!='2'&&f[i][j]!='3'&&f[i][j]!='4'&&f[i][j]!='5'&&f[i][j]!='6'&&f[i][j]!='7'&&f[i][j]!='8'&&f[i][j]!='9'){
    			if(f[i][j]>='a'&&f[i][j]<='z'){
    				if(f[i].size()==1){
					    f[i]="1";
					    break;
				    }
				    f[i].erase(f[i].size()-1);
				}
			}
		}
	}
	for(int i=0;i<f.size();i++){
    	for(int j=0;j<f[i].size();j++){
    		if(f[i][j]!='0'&&f[i][j]!='1'&&f[i][j]!='2'&&f[i][j]!='3'&&f[i][j]!='4'&&f[i][j]!='5'&&f[i][j]!='6'&&f[i][j]!='7'&&f[i][j]!='8'&&f[i][j]!='9'){
    			if(f[i].size()==1){
    				f[i]+='1';
				} 
			}
		}
	}
	double fsum=0,csum=0;
	for(int i=0;i<f.size();i++){
		fsum+=jia(0,f[i]);
	}
	for(int i=0;i<c.size();i++){
		csum+=jia(0,c[i]);
	}
	cout<<unknow<<"=";
	printf("%.3lf",csum/fsum);
	return 0;
}
2023/12/6 13:17
加载中...