В последовательности слов, разделенных пробелами, после каждого слова перед пробелом вставить запятую, кроме последнего слова

И последними буквами

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).

____________________________________________________


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: