75求调!!!
查看原帖
75求调!!!
797763
lishengkai楼主2023/10/4 20:23
#include<bits/stdc++.h>
using namespace std;
int n,xb;
string op,ip;
struct c
{
	int id;
	string ip;
}server[1001];
bool check(string ip)
{
	int a=0,f=0,b=0;
	if(!isdigit(ip[0]))
		return(false);
	for(int i=0;i<ip.size();++i)
	{
		if(ip[i]=='.')
			++f;
		if(ip[i]==':')
		{
			++b;
			ip[i]='.';
		}
		if(!((int(ip[i])>=48&&int(ip[i])<=57)||int(ip[i])==46||int(ip[i])==58))
			return(false);
	}
	if(f!=3||b!=1)
		return(false);
	ip=':'+ip+':';
	for(int i=1;i<ip.size();++i)
	{
		if(ip[i]==48&&isdigit(ip[i+1])&&(ip[i-1]==':'||ip[i-1]=='.'))
			return(false);
		if(isdigit(ip[i]))
			a=a*10+ip[i]-48;
		if(ip[i]=='.')
		{
			if(a>255||a<0)
				return(false);
			a=0;
		}
		if(ip[i]==':')
			if(a>65535||a<0)
				return(false);
	}
	return(true);
}
int main()
{
	scanf("%d",&n);
	for(int k=1;k<=n;++k)
	{
		cin>>op>>ip;
		if(op=="Server")
		{
			if(!check(ip))
			{
				printf("ERR\n");
				continue;
			}
			bool t=true;
			for(int i=1;i<=xb;++i)
				if(ip==server[i].ip)
				{
					t=false;
					break;
				}
			if(t)
			{
				server[++xb].id=k;
				server[xb].ip=ip;
				printf("OK\n");
			}else
				printf("FAIL\n");
		}
		if(op=="Client")
		{
			if(!check(ip))
			{
				printf("ERR\n");
				continue;
			}
			bool t=false;
			int id=0;
			for(int i=1;i<=xb;++i)
				if(ip==server[i].ip)
				{
					id=server[i].id;
					t=true;
					break;
				}
			if(t)
				printf("%d\n",id);else
				printf("FAIL\n");
		}
	}
	return 0;
}
2023/10/4 20:23
加载中...