Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<string>
- #include <stdlib.h>
- #include <algorithm>
- using namespace std;
- int main()
- {
- string n;
- while(cin>>n)
- {
- if(n.find(".")!=string::npos)
- goto IPV4;
- else if(n.find(":")!=string::npos)
- {
- goto IPV6;
- }
- else
- goto NO;
- IPV4:
- {
- string sub[4]={""};
- int pos[4]={0};
- for(int i=1;i<4;i++)
- {
- if(n.find(".",pos[i-1]+1)!=string::npos)
- pos[i]=n.find(".",pos[i-1]+1)+1;
- else
- goto NO;
- sub[i-1]=n.substr(pos[i-1],pos[i]-pos[i-1]-1);
- }
- sub[3]=n.substr(pos[3]);
- // for(int i=0;i<4;i++)
- // {
- // cout<<"***"<<sub[i]<<endl;
- // }
- for(int i=0;i<4;i++)
- {
- for(int j=0;j<sub[i].length();j++)
- {
- if(!isdigit(sub[i][j]))
- goto NO;
- }
- if(sub[i].length()!=1&&sub[i][0]=='0')
- goto NO;
- if(atoi(sub[i].c_str())>255||atoi(sub[i].c_str())<0)
- goto NO;
- }
- cout<<"IPv4\n";
- goto END;
- }
- IPV6:
- {
- string sub[8]={""};
- int pos[8]={0};
- for(int i=1;i<8;i++)
- {
- if(n.find(":",pos[i-1]+1)!=string::npos)
- pos[i]=n.find(":",pos[i-1]+1)+1;
- else
- goto NO;
- sub[i-1]=n.substr(pos[i-1],pos[i]-pos[i-1]-1);
- }
- sub[7]=n.substr(pos[7]);
- // for(int i=0;i<8;i++)
- // {
- // cout<<"+++"<<sub[i]<<endl;
- // }
- for(int i=0;i<8;i++)
- {
- // transform(sub[i].begin(),sub[i].end(),sub[i].begin(),::tolower);
- if(sub[i].length()>4||sub[i].length()<0)
- goto NO;
- if(sub[i][0]=='0'&&sub[i].length()!=1)
- if(sub[i][1]=='0')
- goto NO;
- for(int j=0;j<sub[i].length();j++)
- {
- if(!isdigit(sub[i][j]))
- if((char)tolower(sub[i][j])>'f')
- goto NO;
- }
- }
- cout<<"IPv6\n";
- goto END;
- }
- NO:
- cout<<"N\n";
- END:
- ;
- }
- }
- //輸入說明:
- //
- //每筆資料會輸入一行IP位址 直到EOF
- //
- //輸出說明:
- //
- //判斷輸入的值是否為合法的IP位址
- //若為IPv4 輸出IPv4
- //若為IPv6 輸出IPv6
- //兩者皆非輸出N
- //
- //SAMPLE INPUT:
- //
- //172.16.254.1
- //2001:0db8:85a3:0:0:8A2E:0370:7334
- //256.256.256.256
- //2001:0db8:85a3:0:0:8A2E:0370:7334:
- //1e1.4.5.6
- //
- //SAMPLE OUTPUT:
- //
- //IPv4
- //IPv6
- //N
- //N
- //N
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement