Предикат, который выводит номера всех позиций вхождения заданного элемента в строку - Prolog

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Подскажите, пожалуйста, как вывести номера всех позиций вхождения заданного элемента в строку. Вот код для вывода последней позиции вхождения:
Листинг программы
  1. domains
  2. s=string
  3. c=char
  4. i=integer
  5. predicates
  6. lastsym(c,s,i,i)
  7. clauses
  8. lastsym(_,"",_,0).
  9. lastsym(C,S,N1,N1):-frontchar(S,C,S1),NextN1=N1+1,lastsym(C,S1,NextN1,N),N=0,!.
  10. lastsym(C,S,N1,N):-frontchar(S,_,S1),NextN1=N1+1,lastsym(C,S1,NextN1,N).
  11. goal
  12. write("Введите строку: "),
  13. readln(S),
  14. readchar(C),
  15. write("Введите символ:",C),nl,
  16. lastsym(C,S,1,X),
  17. write("Последняя позиция вхождения символа: ",X).

Решение задачи: «Предикат, который выводит номера всех позиций вхождения заданного элемента в строку»

textual
Листинг программы
  1. domains
  2. int=integer
  3. intl=int*
  4.  
  5. predicates
  6. count(string,char,int,intl)
  7. task(string,char,intl)
  8.  
  9. clauses
  10.  
  11. count("",_,_,[]).
  12. count(S,P,N,[N|T]) :- frontchar(S,P,L),N1=N+1,count(L,P,N1,T).
  13. count(S,P,N,T) :- frontchar(S,Q,L),Q<>P,N1=N+1,count(L,P,N1,T).
  14.  
  15. task(X,P,R) :- count(X,P,1,R).

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы