И последними буквами
6) Определение наличия в строке численных данных
7) Подсчет количества слов в строке, длина которых больше заданно
8) Реверсация строки
9) Реверсация строки через реверсацию списка
10) Преобразование строки в список символов
11) Преобразование строки в список атомов
12) Удаление из строки пробелов
13) В заданной последовательности символов удалить каждый символ * и повторить каждый символ, отличный от *
14) В последовательности слов, разделенных пробелами, после каждого слова перед пробелом вставить запятую, кроме последнего слова.
15) Дана строка символов. Если в ней нет символа *, то строку оставить без изменения, иначе заменить символ, стоящий после первой *, на символ +
16) Дана последовательность слов, разделенных пробелами. Первая буква слова - большая, остальные - малые. Вывести на экран слова, внутри которых имеется хотя бы одна буква, с которой слово начинается.
17) Удаление каждого 2-ого и 3-его символа в строке
18) Найти букву в середине слова, либо 2 буквы, если количество символов четное
|
|
19) В словах “килограм”, “граматика”, “грамофон” исправить грамматические ошибки (с помощью составленной программы).
20) Разбиение стороки на 2 по границе слова
21) Самое длинное слово
22) Нахождение в строке самого короткого слова
____________________________________________________
1)Подсчет количества слов в строке
Predicates
kol_words(string,integer)
Clauses
kol_words("",0).
kol_words(Str,N):-fronttoken(Str,_,Str2),kol_words(Str2,N1),
N=N1+1.
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
kol_words(Str,N),
write("Rezult=",N).
_____________________________________________________
2)Подсчитать, сколько раз во введенной строке встречается буква ‘a’
Predicates
simbol_A(string,integer)
Clauses
simbol_A("",0).
simbol_A(Str,N):-frontchar(Str,S1,Ost),
S1='a',
simbol_A(Ost,N1),N=N1+1.
simbol_A(Str,N):-frontchar(Str,S1,Ost),
S1<>'a',
simbol_A(Ost,N).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
simbol_A(Str,N),
write("Rezult=",N).
___________________________________________________
3)Проверить, имеются ли в заданной строке две подряд идущие буквы ‘н’
Predicates
simbol_2N(string)
Clauses
simbol_2N("").
simbol_2N(Str):-frontchar(Str,S1,Ost),
S1='n',
frontchar(Ost,S2,Ost1),
S2='n',write("Yes").
simbol_2N(Str):-frontchar(Str,S1,Ost),
S1<>'n',
simbol_2N(Ost).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
simbol_2N(Str).
4)В последовательности слов, разделенных пробелами, определить количество слов, начинающихся с буквы ‘a’
Predicates
begin_simbol_A(string,integer)
Clauses
begin_simbol_A("",0).
begin_simbol_A(Str,N):-fronttoken(Str,S1,Ost),
frontchar(S1,Beg,Ost1),
Beg='a',
begin_simbol_A(Ost,N1),
N=N1+1.
begin_simbol_A(Str,N):-fronttoken(Str,S1,Ost),
frontchar(S1,Beg,Ost1),
Beg<>'a',
begin_simbol_A(Ost,N).
|
|
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
begin_simbol_A(Str,N),
write(N).
___________________________________________________
Нахождение в строке слов с одинаковыми первыми
И последними буквами
Domains
list=string*
Predicates
fl(string,list)
Clauses
fl("",[]).
fl(Str,[Word|T]):-fronttoken(Str,Word,Ost),
str_len(Word,Len_word),
frontstr(1,Word,Char_1,Ost_w),
Len=Len_word-1,
frontstr(Len,Word,_,Char_l),
Char_1=Char_l,
fl(Ost,T).
fl(Str,T):-fronttoken(Str,Word,Ost),
str_len(Word,Len_word),
frontstr(1,Word,Char_1,Ost_w),
Len=Len_word-1,
frontstr(Len,Word,_,Char_l),
Char_1<>Char_l,
fl(Ost,T).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
fl(Str,L),
write("Rezult=",L).
___________________________________________________
Определение наличия в строке численных данных
Predicates
proverka(string,integer)
Clauses
proverka("",0).
proverka(Str,N):-frontchar(Str,Char,Ost),
Char>='0',Char<='9',
proverka(Ost,N1),N=N1+1.
proverka(Str,N):-frontchar(Str,Char,Ost),
Char<'0',
proverka(Ost,N).
proverka(Str,N):-frontchar(Str,Char,Ost),
Char>'9',
proverka(Ost,N).
goal
clearwindow,
write("Enter string"),nl,
readln(Str),
proverka(Str,N),
write("Rezult=",N).
______________________________________________________
Подсчет количества слов в строке, длина которых больше заданной
Predicates
kol_words(string,integer,integer)
Clauses
kol_words("",L,0).
kol_words(Str,L,N):-fronttoken(Str,Word,Ost),
str_len(Word,Len),Len > L,
kol_words(Ost,L,N1),N=N1+1.
kol_words(Str,L,N):-fronttoken(Str,Word,Ost),
str_len(Word,Len),Len <= L,
kol_words(Ost,L,N).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
write("Enter zadannyu dlinu"),nl,
readint(L),
kol_words(Str,L,N),
write("Rezult=",N).
Реверсация строки
Predicates
revers(string,string)
Clauses
revers("","").
revers(Str,Str2):-frontstr(1,Str,Char,Ost),
revers(Ost,Str3),
concat(Str3,Char,Str2).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
revers(Str,Str2),
write("Rezult=",Str2).
_____________________________________________________
Реверсация строки через реверсацию списка
Domains
list=char*
Predicates
revers(list,list)
revers1(list,list,list)
convert(string,list)
convert1(list,string)
Clauses
revers([],[]).
revers(L,Lrev):-revers1(L,[],Lrev).
revers1([],Lrev,Lrev).
revers1([H|T],L,Lrev):-revers1(T,[H|L],Lrev).
convert("",[]).
convert(Str,[H|T]):-frontchar(Str,H,Str1),convert(Str1,T).
convert1([],"").
convert1([H|T],Str):-convert1(T,Str1),frontchar(Str,H,Str1).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
convert(Str,L),
revers(L,L1),
convert1(L1,Str1),
write("Rezult=",Str1).
___________________________________________________
Преобразование строки в список символов
Domains
list=char*
Predicates
convert(string,list)
Clauses
convert("",[]).
convert(Str,[H|T]):-frontchar(Str,H,Ost),convert(Ost,T).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
convert(Str,L),
write("Rezult=",L).
__________________________________________________
Преобразование строки в список атомов
Domains
list=string*
Predicates
convert(string,list)
Clauses
convert("",[]).
convert(Str,[H|T]):-fronttoken(Str,H,Ost),convert(Ost,T).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
convert(Str,L),
write("Rezult=",L).
__________________________________________________
Удаление из строки пробелов
Predicates
del_spase(string,string)
Clauses
del_spase("","").
del_spase(Str,Str2):-fronttoken(Str,Word,Ost),
del_spase(Ost,Str3),
concat(Word,Str3,Str2).
Goal
clearwindow,
write("Enter string"),nl,
readln(Str),
del_spase(Str,Str2),
write("Rezult=",Str2).
13)В заданной последовательности символов удалить каждый символ * и повторить каждый символ, отличный от *.
Predicates
del_el(string,string)
Clauses
del_el("","").
del_el(Str,Str1):-frontchar(Str,Ch,Ost),Ch='*',
del_el(Ost,Str2),
concat(Ost,Str2,Str1).
del_el(Str,Str1):-frontchar(Str,Ch,Ost),Ch<>'*',
write(Ch,Ch), del_el(Ost,Str1).
Goal
clearwindow,
write("Enter string:"),nl,
readln(Str),
write("New string:"),nl,
del_el(Str,Str1).
____________________________________________________
В последовательности слов, разделенных пробелами, после каждого слова перед пробелом вставить запятую, кроме последнего слова.
Predicates
ins(string,string)
Clauses
ins("","").
ins(S1,S2):-fronttoken(S1,W,T),str_len(T,X),X>0,
concat(W,", ",S4),ins(T,S3),concat(S4,S3,S2).
ins(S1,S2):-fronttoken(S1,W,T),str_len(T,X),X<=0,
concat(W,"",S4),ins(T,S3),concat(S4,S3,S2).
Goal
write("Enter string"),nl,
readln(Str),
ins(Str,Str2),
write("Rezult=",Str2).
____________________________________________________
15)Дана строка символов. Если в ней нет символа *, то строку оставить без изменения, иначе заменить символ, стоящий после первой *, на символ +.
Predicates
change(string,string,integer)
Clauses
change("","",_).
|
|
change(S1,S2,F):-F=0,frontstr(1,S1,C,T),C="*",
frontstr(1,T,C1,T1),
change(T1,S3,1),concat("*+",S3,S2).
change(S1,S2,F):-F<>0,frontstr(1,S1,C,T),
change(T,S3,F),concat(C,S3,S2).
change(S1,S2,F):-F=0,frontstr(1,S1,C,T),C<>"*",
change(T,S3,F),concat(C,S3,S2).
Goal
write("Enter string"),nl,
readln(Str),
change(Str,Str2,0),
write("Rezult=",Str2).
______________________________________________________
Дана последовательность слов, разделенных пробелами. Первая буква слова - большая, остальные - малые. Вывести на экран слова, внутри которых имеется хотя бы одна буква, с которой слово начинается.
Predicates
out(string)
ischar(string,string,integer)
Clauses
ischar("",_,0).
ischar(_,"",0).
ischar(S,C,F):-frontstr(1,S,C1,T),C1=C,F=1.
ischar(S,C,F):-frontstr(1,S,C1,T),C1<>C,ischar(T,C,F).
out("").
out(S):-fronttoken(S,W,T),upper_lower(W,W1),
frontstr(1,W1,C,T1),ischar(T1,C,F),F=1,write(W," "),
out(T).
out(S):-fronttoken(S,W,T),upper_lower(S,S1),
frontstr(1,S1,C,T1),ischar(W,C,F),F=0,out(T).
Goal
write("Enter string"),nl,
readln(Str),
out(Str).
____________________________________________________