#6 WA
查看原帖
#6 WA
780535
Tree_Chtholly楼主2022/8/28 22:13

我只是个准初中生,不要太高深,谢谢

   #include<iostream>
	#include<cstdio>
	#include<cstring>
	#include<vector> 
	using namespace std;
	struct dxs{
		long long xs,we,zy;//分别为系数,是否未知数系数,在原方程左或右
	};
	int main(){
		vector<dxs> a;
		long long i=0,b=0,d,sum,w; 
		long long unxs=0,he=0;
		double answer;
	string input;
	char unknown;
	cin>>input;
	dxs temp;
	//读入各多项式
	while(input[i]!='='){
		
		w=0;
		sum=0;
		d=0;//+
		if(input[i]=='-'){
			d=1;
			i++;
		}
		if(input[i]=='+'){
			d=0;
			i++;
		}
		while(isdigit(input[i])){
			sum*=10;
			sum+=input[i]-'0';
			i++;
		}
		if(d==1) sum*=-1;
		if(input[i]>='a'&&input[i]<='z'){
			unknown=input[i];
			i++;
			w=1;
		}
		temp.xs=sum;
		temp.we=w;
		temp.zy=0;//left
		a.push_back(temp);
		b++;

		

	}
	i++;//'='前面到此结束
		while(i<input.size()){
		w=0;
		sum=0;
		d=0;//+
		if(input[i]=='-'){
			d=1;
			i++;
		}
		if(input[i]=='+'){
			d=0;
			i++;
		}//检测符号
				while(isdigit(input[i])&&i<input.size()){
			sum*=10;
			sum+=input[i]-'0';
			i++;
		}
		if(d==1) sum*=-1;//读入系数
		if(input[i]>='a'&&input[i]<='z'&&i<input.size()){
			unknown=input[i];
			i++;
			w=1;
		}//是否为未知数系数
		temp.xs=sum;
		temp.we=w;
		temp.zy=1;
		a.push_back(temp);
		b++;
		//添至所有单项式数组
	}
	//移项,左边未知数,右边整数
	for(long long i=0;i<b;i++){
		if(a[i].we==1){
			if(a[i].zy==1){
				a[i].xs*=-1;
				a[i].zy=0;
			}
		}
		else{
			if(a[i].zy==0){
				a[i].xs*=-1;
				a[i].zy=1;
			}
		}
	}
	
	
	//合并同类项
	for(long long i=0;i<b;i++){
		if(a[i].we==1){
			unxs+=a[i].xs;
			
		}
		else{
			he+=a[i].xs;
		}
	}
   //系数化为1
	answer=he*1.00/unxs;
	if(answer==-0) answer=0;
	printf("%c=%.3f",unknown,answer); 
	}
2022/8/28 22:13
加载中...