0分求助,过了样例(笑
查看原帖
0分求助,过了样例(笑
730157
UnknownPeople楼主2023/8/4 15:05

0分,过了样例但不知道哪里有问题

#include<iostream>
#include<string>
#include<stdio.h>
#define db double
using namespace std;
int main(){
	string s;
	cin>>s;
	char c;
	if(s[0]!='-')
		s='+'+s;
	db x=0,k=0;
	int D=s.find('=');
	if(s[D+1]!='-')
		s.insert(D+1,"+");
	for(int i=0;i<s.size();i++)
		if(s[i]>='a'&&s[i]<='z'){
			c=s[i];
			int pos=i-1;
			while(s[pos]>='0'&&s[pos]<='9')
				pos--;
			pos+=1;
			int t=stoi(s.substr(pos,i));
			if(s[pos-1]=='+'&&pos<D)
				x+=t;
			else if(s[pos-1]=='+'&&pos>D)
				x-=t;
			else if(s[pos-1]=='-'&&pos<D)
				x-=t; 
			else if(s[pos-1]=='-'&&pos>D)
				x+=t;
		}
	for(int i=0;i<s.size();i++)
		if(s[i]>='a'&&s[i]<='z'){
			int pos=i-1;
			while(s[pos]>='0'&&s[pos]<='9')
				pos--;
			pos+=1;
			int t=stoi(s.substr(pos,i));
			s.erase(pos-1,i+1);
			i=pos-1;
		}
	for(int i=0;i<s.size();i++)
		if(s[i]=='+'||s[i]=='-'){
			int pos=i+1;
			while(pos<s.size()&&s[pos]>='0'&&s[pos]<='9')
				pos++;
			if(pos==s.size())
				pos++;
			int t=stoi(s.substr(i+1,pos));
			if(s[i]=='+'&&pos<D)
				k-=t;
			else if(s[i]=='+'&&pos>D)
				k+=t;
			else if(s[i]=='-'&&pos<D)
				k+=t; 
			else if(s[i]=='-'&&pos>D)
				k-=t;
		}
	cout<<c<<"=";
	printf("%.3lf",k);
	return 0;
}
2023/8/4 15:05
加载中...