Change(T,S3,F),concat(C,S3,S2).
И последними буквами 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<>"*",
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|