麻烦大家帮忙看看这是为什么?
这个样例的结果怎么出的
#include <bits/stdc++.h>
using namespace std;
string s;
int charToInt(string str)
{
int ret=0;
for(int i=0;i<str.size();i++)
{
ret=ret*10+(str[i]-'0');
}
return ret;
}
int findOp()
{
int ret;
ret=s.find('+');
if(ret!=-1)return ret;
ret=s.find('-');
if(ret!=-1)return ret;
ret=s.find('*');
if(ret!=-1)return ret;
ret=s.find('/');
if(ret!=-1)return ret;
return -1;
}
int findEql()
{
int ret=s.find('=');
if(ret!=-1)return ret;
return -1;
}
int findQes()
{
int ret=s.find('?');
}
void judgeAdd()
{
int addPosition=s.find('+');
int eql=findEql();
int x=charToInt(s.substr(0,addPosition));
int y=charToInt(s.substr(addPosition+1,eql));
int z=charToInt(s.substr(eql+1,s.size() ) );
if(s[0]=='?')cout<<z-y<<endl;
else if(s[addPosition+1]=='?')cout<<z-x<<endl;
else if(s[eql+1]=='?')cout<<x+y<<endl;
}
void judgeSub()
{
int subPosition=s.find('-');
int eql=findEql();
int x=charToInt(s.substr(0,subPosition));
int y=charToInt(s.substr(subPosition+1,eql));
int z=charToInt(s.substr(eql+1,s.size() ) );
if(s[0]=='?')cout<<z+y<<endl;
else if(s[subPosition+1]=='?')cout<<x-z<<endl;
else if(s[eql+1]=='?')cout<<x-y<<endl;
}
void judgeMul()
{
int mulPosition=s.find('*');
int eql=findEql();
int x=charToInt(s.substr(0,mulPosition));
int y=charToInt(s.substr(mulPosition+1,eql));
int z=charToInt(s.substr(eql+1,s.size() ) );
if(s[0]=='?')cout<<z/y<<endl;
else if(s[mulPosition+1]=='?')cout<<z/x<<endl;
else if(s[eql+1]=='?')cout<<x*y<<endl;
}
void judgeDiv()
{
int divPosition=s.find('/');
int eql=findEql();
int x=charToInt(s.substr(0,divPosition));
int y=charToInt(s.substr(divPosition+1,eql));
int z=charToInt(s.substr(eql+1,s.size() ) );
if(s[0]=='?')cout<<"不存在唯一解"<<endl;//cout<<z-y<<endl;
if(s[divPosition+1]=='?')cout<<"不存在唯一解"<<endl;//cout<<z-x<<endl;
if(s[eql+1]=='?')cout<<x/y<<endl;
}
int main()
{
cin>>s;
int ret1=findQes();
int ret2=findEql();
if(findOp()==-1)//没有运算符,运算符被替换了
{
cout<<"没有运算符"<<endl;
int x=charToInt(s.substr(0,ret1));
int y=charToInt(s.substr(ret1+1,ret2));
int z=charToInt(s.substr(ret2+1,s.size() ) );
//cout<<ret1<<s[ret1]<<" "<<ret2<<s[ret2]<<endl;
//cout<<x<<" "<<y<<" "<<z<<endl;
if( x+y==z )cout<<"+"<<endl;
if( x-y==z )cout<<"-"<<endl;
if( x*y==z )cout<<"*"<<endl;
if( x/y==z )cout<<"/"<<endl;
}
else//有运算符,数字被替换了
{
cout<<"有运算符"<<endl;
if(s.find('+')!=-1)judgeAdd();
else if(s.find('-')!=-1)judgeSub();
else if(s.find('*')!=-1)judgeMul();
else if(s.find('/')!=-1)judgeDiv();//else
}
// 请在此输入您的代码
return 0;
}