Предикат, который выводит номера всех позиций вхождения заданного элемента в строку - Prolog
Формулировка задачи:
Доброго времени суток. Подскажите, пожалуйста, как вывести номера всех позиций вхождения заданного элемента в строку. Вот код для вывода последней позиции вхождения:
Листинг программы
- domains
- s=string
- c=char
- i=integer
- predicates
- lastsym(c,s,i,i)
- clauses
- lastsym(_,"",_,0).
- lastsym(C,S,N1,N1):-frontchar(S,C,S1),NextN1=N1+1,lastsym(C,S1,NextN1,N),N=0,!.
- lastsym(C,S,N1,N):-frontchar(S,_,S1),NextN1=N1+1,lastsym(C,S1,NextN1,N).
- goal
- write("Введите строку: "),
- readln(S),
- readchar(C),
- write("Введите символ:",C),nl,
- lastsym(C,S,1,X),
- write("Последняя позиция вхождения символа: ",X).
Решение задачи: «Предикат, который выводит номера всех позиций вхождения заданного элемента в строку»
textual
Листинг программы
- domains
- int=integer
- intl=int*
- predicates
- count(string,char,int,intl)
- task(string,char,intl)
- clauses
- count("",_,_,[]).
- count(S,P,N,[N|T]) :- frontchar(S,P,L),N1=N+1,count(L,P,N1,T).
- count(S,P,N,T) :- frontchar(S,Q,L),Q<>P,N1=N+1,count(L,P,N1,T).
- task(X,P,R) :- count(X,P,1,R).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д