求助
  • 板块灌水区
  • 楼主唯有谔谔
  • 当前回复0
  • 已保存回复0
  • 发布时间2021/11/6 15:47
  • 上次更新2023/11/4 01:16:38
查看原帖
求助
158821
唯有谔谔楼主2021/11/6 15:47

P7911 [CSP-J 2021] 网络连接

#include<iostream>
#include<cstring>
using namespace std;
string a,se[1001],c[1001],tse[1001];
int n;
int p(string b)
{
	int d=0,m=0;//d表示.的个数,m表示:的个数 
	int flagm=0;
	int wm=0;
	for(int i=0;i<b.length();i++)
	{
		if(b[i]=='.')
		{
			if(flagm==1) 
			{
				cout<<"NO.1";
				return 0;
			}
			d++;
			if(b[i+1]<'0'||b[i+1]>'9'||b[i-1]<'0'||b[i-1]>'9')
			{
				cout<<"NO.2";
				return 0;
			}
		}
		if(b[i]==':')
		{
			wm=i;//记录:的位置 
			flagm=1;//标记已出现: 
			m++;
			if(b[i+1]<'0'||b[i+1]>'9'||b[i-1]<'0'||b[i-1]>'9')//判断位置是否合法 
			{
				cout<<"no.3";
				return 0;
			}
		}
	}
	if(d!=3||m!=1)//判断.和:的个数是否合法 
	{
		cout<<"no.4";
		return 0;
	}
	int s[1001],t=1;
	for(int i=0;i<wm;i++)
	{
		if(b[i]>='0'&&b[i]<='9')
		{
			s[t]=b[i]-'0'; 
			t++;
		}
		if(b[i]=='.')//判断每一段数是否合法 
		{
			if(t>3) 
			{
				cout<<"no.5";
				return 0;
			}
			if(t==3) 
			{
				if(s[1]==0) 
				{
					cout<<"no.6";
					return 0;
				}
				int st=s[1]*100+s[2]*10+s[3];
				if(st>255) 
				{
					cout<<"no.7";
					return 0;
				}
				st=0;
				t=1;
				memset(s,0,sizeof(0));
			}
			if(t==2&&s[1]==0)
			{
				cout<<"no.8";
				return 0;
			}
			t=1;
			memset(s,0,sizeof(0));
		}
	}
	t=1;
	memset(s,0,sizeof(0));
	for(int i=wm;i<b.length();i++)//同上 
	{
		if(b[i]>='0'&&b[i]<='9')
		{
			s[t++]=b[i]-'0';
		}
	}
	if(t>5)
	{
		cout<<"no.9";
		return 0;
	}
	else
	{
		if(s[1]==0&&t!=1)
		{
			cout<<"no.10";
			return 0;
		}
	}
	return 1;
}
int main()
{
	int set=1,ct=1,cs,fcs=0,flag=0,fut=0;
	string ps;
	cin>>ps;
	if(p(ps)==1) cout<<"1";
	else cout<<"0";
	/*cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a;
		if(a=="Server")
		{
			cin>>se[set];
		}
		else
		{
			cin>>c[ct++];
		}
	}
	for(int i=1;i<=set;i++)
	{
		if(p(se[i])==0) cout<<"ERR"<<endl;
		else 
		{
			
			for(int j=1;j<=i;j++)
			{
				if(se[i]==se[j]) 
				{
					cout<<"FAIL"<<endl;
					flag=1;
					break;
				}
			}
			if(flag==0) cout<<"OK"<<endl;
		}
		flag=0;
	}*/
	return 0;
}

总是在第5和第7个判断返回0,求大佬帮忙看看

2021/11/6 15:47
加载中...