Guest User

Untitled

a guest
Jun 22nd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.73 KB | None | 0 0
  1. DOMAINS
  2.  
  3. list_string = string*
  4. number_list = integer*
  5. I = integer
  6. C = char
  7.  
  8. PREDICATES
  9.  
  10. nondeterm result
  11. nondeterm str_poisk(string,string)
  12. del_letter(char,string,string)
  13. str_pos(char,string,integer)
  14. str_delete(string,integer,integer,string)
  15.  
  16. CLAUSES
  17.  
  18. str_poisk("",Result):-
  19. nl,
  20. write(" Words with latin letters: "),nl,
  21. write(Result),nl.
  22. str_poisk(Sin,Letter):-
  23. frontchar(Sin,C,S1),
  24. del_letter(C,Letter,Result),
  25. str_poisk(S1,Result).
  26.  
  27. del_letter(C,StrIn,StrOut):-
  28. str_pos(C,StrIn,Npos),
  29. Npos > 0, !, str_delete(StrIn,Npos,1,StrOut); str_delete(StrIn,1,0,StrOut).
  30.  
  31. str_pos(C,S,1):-
  32. frontchar(S,C,_),!.
  33.  
  34. str_pos(_,_,0).
  35.  
  36. str_delete(S,I,C,SO) :-
  37. I1 = I - 1,
  38. frontstr(I1,S,S1,S2),
  39. frontstr(C,S2,_,S3),
  40. concat(S1,S3,SO).
  41.  
  42. result:-
  43. nl, nl,
  44. write(" 4. Check if there are words with latin letters in the string."), nl,
  45. write(" Enter the string: "),
  46. readln(Str),
  47. Letter = "abcdefghijklmnopqrstuvwxyz",
  48. str_poisk(Str,Letter),
  49. readchar(_),!.
  50.  
  51. GOAL
  52. result.
  53.  
  54. PREDICATES
  55.  
  56. is_latin_letter(char).
  57.  
  58. check_string(string).
  59. check_string(string, integer, integer). %i, i, o
  60. between( integer, integer, integer ).
  61.  
  62. print_result(string, integer).
  63.  
  64.  
  65. CLAUSES
  66.  
  67. is_latin_letter( Letter ) :-
  68. upper_lower( UpperCaseLetter, Letter ),
  69. char_int( UpperCaseLetter, Code),
  70. char_int('A',CodeA),
  71. char_int('Z',CodeZ),
  72. between(CodeA, CodeZ, Code).
  73.  
  74. check_string( String ) :-
  75. check_string( String, 0, LatinLetterCount ),
  76. print_result( String, LatinLetterCount ).
  77.  
  78. check_string("", N, N ).
  79. check_string( S, N1, N2 ) :-
  80. frontchar(S, Char, S1),
  81. if is_latin_letter( Char ) then
  82. M1 = N1 + 1
  83. else
  84. M1 = N1
  85. end if,
  86. check_string( S1, M1, N2 ).
  87.  
  88. between( Low, High, _Value ):-
  89. Low > High, !, fail.
  90.  
  91. between( Low, High, Low ).
  92.  
  93. between( Low, High, Value ):-
  94. NextLow is Low + 1,
  95. between( NextLow, High, Value).
  96.  
  97. print_result(String, LatinLetterCount ):-
  98. str_len(String, Len),
  99. if LatinLetterCount = Len then
  100. write("Строка латинских букв =", String),
  101. write("Длина = ", Len).
  102. else
  103. write("Количество латинских букв в строке =", LatinLetterCount ).
  104. end if.
  105.  
  106. GOAL
  107.  
  108. check_string("B45X2FG0OP"),% Строка, содержащая произвольные символы.
  109. check_string("ABCdef"). % Строка, содержащая только прописные и строчные латинские буквы.
Add Comment
Please, Sign In to add comment