求助
查看原帖
求助
171521
SCWLine楼主2021/11/11 17:55

有木有大佬帮看看有什么问题,实在查不出错了

#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;
}
2021/11/11 17:55
加载中...