Advertisement
dimapi

Untitled

Oct 10th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.47 KB | None | 0 0
  1. program les1;
  2. type II = array[0..3] of byte;
  3.  
  4.  
  5.  
  6.  
  7. function GetIp : II; {Считывание строки, и преобразование ее в числовой тип II}
  8. var S : string;
  9. p, count : integer;
  10. IO : II;
  11. begin
  12. ReadLn(S);
  13. count := 0;
  14. while Length(S)>0 do
  15. begin
  16. p := Pos('.',s); // Поиск подстроки в строке
  17. if p=0 then
  18. p:=Length(S)+1;
  19. IO[count]:= StrToInt(Copy(s,1,p-1));
  20. { WriteLn(IO[count]);}
  21. Inc(count);
  22. Delete(s,1,p);
  23. end;
  24. GetIp := IO;
  25. end;
  26.  
  27. function Ip_Maska(Ip,Ms: II) : II; {Получение адреса по маске}
  28. var i : byte;
  29. IO : II;
  30. begin
  31. for i:=0 to 3 do IO[i]:= Ip[i] AND Ms[i];
  32. Ip_Maska := IO;
  33. end;
  34.  
  35. function Comp_Ip(Ip1,Ip2: II) : boolean; {Сравнение двух Ip адресов}
  36. var i : byte;
  37. fo : boolean;
  38. begin
  39. fo := true;
  40. for i:=0 to 3 do if Ip1[i]<>Ip2[i] then fo := false;
  41. Comp_Ip := fo;
  42. end;
  43.  
  44.  
  45.  
  46.  
  47. var MS,IT : II;
  48. IP : array[1..32000] of II;
  49. i,j,k,kl :integer;
  50. begin
  51. MS := GetIp;
  52. ReadLn(k);
  53. for i := 1 to k do
  54. IP[i] := Ip_Maska(GetIp,MS);
  55. i := 1;
  56. repeat
  57. IT:= IP[1];
  58. Inc(kl);
  59. for j:= 2 to k do IP[j-1]:=IP[j];
  60. Dec(k);
  61. j:=1;
  62. while (j<=k) do
  63. if Comp_Ip(IT,IP[j]) then
  64. begin
  65. for i:= j to k-1 do IP[i]:=IP[i+1];
  66. Dec(k);
  67. end
  68. else Inc(j);
  69. until k<1;
  70. WriteLn(kl);
  71.  
  72.  
  73. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement