巨长的代码
查看原帖
巨长的代码
907430
corner_xiejunqi楼主2024/7/25 18:34

#include<bits/stdc++.h>
using namespace std;
string a;
int dz,ax=0,a1x=0,nx=0,n1x=0;
char weizhi;
int vis[1001];
int main(){
	//1、声明变量,输入
	cin>>a;
	int len1=a.length();
	for(int i=0;i<len1;i++){
		if(a[i]=='='){
			dz=i;
		}
		if(a[i]>='a' && a[i]<='z'){
			weizhi=a[i];
		}
	}
//	cout<<weizhi<<endl;
//	cout<<dz<<endl;
	//2、计算过程
	for(int i=0;i<dz;i++){
		if(a[i]==weizhi){
			int j=i-1;
			int shu=1;
			int anx=0;
			while(a[j]!='-' && a[j]!='+' && j>=0){
				vis[j]=1;
				anx+=shu*(a[j]-'0');
				j-=1;
				shu*=10;
			}
			//cout<<j<<endl;
			ax+=anx;
			if(j==i-1){
				if(a[j]=='-'){
					ax-=1;
				}else ax+=1;
			}else if(j>=0){
				if(a[j]=='-'){
					ax-=2*anx;
				}
			}
		}
	}
	for(int i=dz+1;i<len1;i++){
		if(a[i]==weizhi){
			int j=i-1;
			int shu=1;
			int anx=0;
			while(a[j]!='-' && a[j]!='+' && j>=dz+1){
				vis[j]=1;
				anx+=shu*(a[j]-'0');
				j-=1;
				shu*=10;
				
			}
			//cout<<j<<endl;
			a1x+=anx;
			if(j==i-1){
				if(a[j]=='-'){
					a1x-=1;
				}else a1x+=1;
			}else if(j>=dz+1){
				if(a[j]=='-'){
					a1x-=2*anx;
				}
			}
		}
	}
	int az=ax-a1x;
	for(int i=0;i<dz;i++){
		if('0'<=a[i] && a[i]<='9'&& a[i+1]<'0' && !vis[i] || !vis[i] && '0'<=a[i] && a[i]<='9'&& a[i+1]>'9'){
			int j=i;
			int shu=1;
			bool flag=false;
			int anx=0;
			while('0'<=a[j] && a[j]<='9'){
				anx+=shu*(a[j]-'0');
				j--;
				shu*=10;
			}
			if(j>=0){
				if(a[j]=='-'){
					flag=true;
				}
			}
			nx+=anx;
			if(flag){
				nx-=2*anx;
			}
		}
	}
	for(int i=dz+1;i<len1;i++){
		if('0'<=a[i] && a[i]<='9'&& a[i+1]<'0' && !vis[i] || !vis[i] && '0'<=a[i] && a[i]<='9'&& a[i+1]>'9'){
			int j=i;
			int shu=1;
			bool flag=false;
			int anx=0;
			while('0'<=a[j] && a[j]<='9'){
				anx+=shu*(a[j]-'0');
				j--;
				shu*=10;
			}
			if(j>=0){
				if(a[j]=='-'){
					flag=true;
				}
			}
			n1x+=anx;
			if(flag){
				n1x-=2*anx;
			}
		}
	}
	double nz=n1x-nx;
	if(nz==0){
		cout<<weizhi<<'='<<"0.000";
		return 0;
	}
//	cout<<ax<<' '<<a1x<<endl;
//	cout<<nx<<' '<<n1x<<endl;
//	cout<<az<<' '<<nz<<endl;
	cout<<weizhi<<'='<<fixed<<setprecision(3)<<nz/az;
	//3、输出
	return 0;
}
2024/7/25 18:34
加载中...