有木有大佬帮看看有什么问题,实在查不出错了
#include<iostream>
#include<string>
#include<map>
#include<algorithm>
#define ull unsigned long long int
using namespace std;
int n;
map<string,int> cpt;
string op,ad;
ull jack;
string check(string buffer,bool ser,int no)
{
//cout<<count(buffer.begin(),buffer.end(),':')<<" "<<count(buffer.begin(),buffer.end(),'.')<<endl;
int g=count(buffer.begin(),buffer.end(),':'),c=count(buffer.begin(),buffer.end(),'.');
if((g>2)||(c>3)||(g==0)||(c==0))
return "ERR";
ull number=0;
int point=0,hread=1;
bool bpoint=true;
for(int i=0;i<buffer.size();i++)
{
if(buffer[i]==':')
{
//cout<<number<<endl;
if(point<3)
return "ERR";
if(number>255)
return "ERR";
else
{
bpoint=true;
hread++;
number=0;
}
}
else if((buffer[i]=='0')&&(bpoint))
return "ERR";
else if(buffer[i]=='.')
{
//cout<<number<<endl;
if(bpoint==true)
return "ERR";
if((hread<5)&&(number>255))
return "ERR";
else if((hread==5)&&(number>65535))
return "ERR";
else
{
bpoint=true;
point++;hread++;
number=0;
}
}
else
{
number*=10;
number+=buffer[i]-'0';
bpoint=false;
}
}
//cout<<number<<endl;
if(number>65535)
return "ERR";
if(cpt.find(ad)==cpt.end())
{
if(ser)
{
cpt[ad]=no;
return "OK";
}
if(!ser)
return "FAIL";
}
else
{
if(ser)
return "FAIL";
if(!ser)
{
return "JACK";
}
}
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>op>>ad;
if(op.compare("Server")==0)
{
cout<<check(ad,true,i)<<endl;
}
else
{
string po=check(ad,false,i);
if(po.compare("JACK")!=0)
cout<<po<<endl;
else
cout<<cpt[ad]<<endl;
}
}
return 0;
}