Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- program les1;
- type II = array[0..3] of byte;
- function GetIp : II; {Считывание строки, и преобразование ее в числовой тип II}
- var S : string;
- p, count : integer;
- IO : II;
- begin
- ReadLn(S);
- count := 0;
- while Length(S)>0 do
- begin
- p := Pos('.',s); // Поиск подстроки в строке
- if p=0 then
- p:=Length(S)+1;
- IO[count]:= StrToInt(Copy(s,1,p-1));
- { WriteLn(IO[count]);}
- Inc(count);
- Delete(s,1,p);
- end;
- GetIp := IO;
- end;
- function Ip_Maska(Ip,Ms: II) : II; {Получение адреса по маске}
- var i : byte;
- IO : II;
- begin
- for i:=0 to 3 do IO[i]:= Ip[i] AND Ms[i];
- Ip_Maska := IO;
- end;
- function Comp_Ip(Ip1,Ip2: II) : boolean; {Сравнение двух Ip адресов}
- var i : byte;
- fo : boolean;
- begin
- fo := true;
- for i:=0 to 3 do if Ip1[i]<>Ip2[i] then fo := false;
- Comp_Ip := fo;
- end;
- var MS,IT : II;
- IP : array[1..32000] of II;
- i,j,k,kl :integer;
- begin
- MS := GetIp;
- ReadLn(k);
- for i := 1 to k do
- IP[i] := Ip_Maska(GetIp,MS);
- i := 1;
- repeat
- IT:= IP[1];
- Inc(kl);
- for j:= 2 to k do IP[j-1]:=IP[j];
- Dec(k);
- j:=1;
- while (j<=k) do
- if Comp_Ip(IT,IP[j]) then
- begin
- for i:= j to k-1 do IP[i]:=IP[i+1];
- Dec(k);
- end
- else Inc(j);
- until k<1;
- WriteLn(kl);
- end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement