答案有误
查看原帖
答案有误
600442
DreamSoarUpward楼主2022/6/29 14:42

求调

#include<bits/stdc++.h>
using namespace std;
string s,s1="",s2="";
char ch;
int yc,cs,tot;
/*
yc:化简后带有字母的单项式系数
cs:化简后的常数 
*/ 
int main(){
	cin>>s;
	int i,j,p;
	for(i=0;s[i]!='=';i++)
		s1+=s[i];
	i++;
	for(i;i<s.length();i++)
		s2+=s[i];
	for(int i=0;i<s1.length();i++)
		if(s[i]<='z'&&'a'<=s[i]){
			ch=s[i];
			for(j=i,p=1;s[j-1]=='+'||s[j-1]=='-';j--,p*=10)
				tot+=(s[j]-'0')*p;
			j--;
			if(s[j]=='+')
				yc+=tot;
			else
				yc-=tot;
		}
		else if((s[i+1]=='+'||s[i+1]=='-')&&!(s[i]<='z'&&'a'<=s[i])){
			for(j=i,p=1,tot=0;s[j-1]=='+'||s[j-1]=='-';j--,p*10)
				tot+=(s[j]-'0')*p;
			j--;
			if(s[j]=='-')
				cs+=tot;
			else
				cs-=tot;
		}
	for(int i=0;i<s2.length();i++)
		if(s[i]<='z'&&'a'<=s[i]){
			for(j=i,p=1;s[j-1]=='+'||s[j-1]=='-';j--,p*=10)
				tot+=(s[j]-'0')*p;
			j--;
			if(s[j]=='-')
				yc+=tot;
			else
				yc-=tot;
		}
		else if((s[i+1]=='+'||s[i+1]=='-')&&!(s[i]<='z'&&'a'<=s[i])){
			for(j=i,p=1,tot=0;s[j-1]=='+'||s[j-1]=='-';j--,p*10)
				tot+=(s[j]-'0')*p;
			j--;
			if(s[j]=='+')
				cs+=tot;
			else
				cs-=tot;
		}
	if(yc==0) yc++;
	if(cs==0) cs++;
	cout<<yc<<"a="<<cs<<endl;
	cout<<ch<<"=";
	cout<<fixed<<setprecision(3)<<(double)cs/(double)yc;
}
2022/6/29 14:42
加载中...