50分求助,我这种除空格的方法有说明错误
  • 板块P1689 方程求解
  • 楼主IBKIBK
  • 当前回复0
  • 已保存回复0
  • 发布时间2024/1/20 11:54
  • 上次更新2024/1/20 14:55:04
查看原帖
50分求助,我这种除空格的方法有说明错误
475628
IBKIBK楼主2024/1/20 11:54
#include<bits/stdc++.h>
using namespace std;

long long a,b,c,ans; //a:第一个位置的数 b:第二个 c:第三个 
char x;

int main()
{
	string s;
	getline(cin,s);
	
	//求出符号 
	if(s.find('+')<s.size()) x='+';
	else x='-';
	
	//确定第几个数是? 并将其设置为-1 
	if(s.find('?')>s.find('=')) c=-1;
	else if(s.find('?')>s.find(x)) b=-1;
	else a=-1;
	
	//将不是?的数字求出来 
	if(a!=-1){
		for(int i=0;i<=s.find(x)-1;i++) {
			if(s[i]!=' ') a=a*10+s[i]-'0';
		}
	}
	if(b!=-1){
		for(int i=s.find(x)+1;i<=s.find('=')-1;i++) {
			if(s[i]!=' ') b=b*10+s[i]-'0';
		}
	}
	if(c!=-1){
		for(int i=s.find('=')+1;i<=s.size()-1;i++) {
			if(s[i]!=' ') c=c*10+s[i]-'0';
		}
	}

	//判断每种情况的结果 
	if(c==-1) {
		if(x=='+') ans=a+b;
		else ans=a-b;
	} else if(a==-1) {
		if(x=='+') ans=c-b;
		else ans=c+b;
	} else {
		if(x=='+') ans=c-a;
		else ans=a-c;
	}
	
	cout<<ans;
 	return 0;
}

如果我在输入字符串时就除掉空格,就能得100分,但如果是上面的方法,在计算数字时排除空格,就只有50分。但是实在想不出来哪里不对!

2024/1/20 11:54
加载中...