Заменить в строке все цифровые символы нулями - Prolog

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

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

И google, и yandex мне не помогли. =). Темы такой на форуме нету, поэтому прошу поделится мыслями. Требуется заменить в строке все цифровые символы нулями. Вначале пытался сделать в общем виде для замены одного вводимого символа другим, но как-то не работает.
Листинг программы
  1. predicates
  2. zamena(string,char,char,string)
  3. result
  4. clauses
  5. zamena("",_,_,""):- !.
  6. zamena(S,C,C1,SO):-frontchar(S,C,S1),!,zamena(S1,C,C1,S2),frontchar(SO,C1,S2).
  7. zamena(S,C,C1,SO):-frontchar(S,C2,S1),zamena(S1,C,C1,S2),frontchar(SO,C1,S2).
  8. result:-write("vvedite_stroku_slov"),nl,
  9. readln(S),write("zamenyaemyi_simvol"),nl,
  10. readchar(C),write("zameny_simvol"),nl,
  11. readchar(C1),zamena(S,C,C1,SO),
  12. write("stroka_s_zamenoy-"),zamena(S,C,C1,SO),write(SO).
  13. goal
  14. result
Не допонимаю, сам алгоритм работы похоже я:
Листинг программы
  1. zamena("",_,_,""):-!. %% голова рекурсии - из пустого получаем пустой.
  2. zamena(S,C,C1,SO):-frontchar(S,C,S1),!,zamena(S1,C,C1,S2),frontchar(SO,C1,S2).
  3. вот тут загвоздка - %% символ C оказался первым символом строки S,S1 остаток строки S
  4. %% далее рекурсивно передаем вызов на S1 остаток строки S
  5. frontchar(SO,C1,S2). %%А что происходит здесь? Мы отрезаем вставляемый первый символ С1 из
  6. %% пустой строки? Или как передается заменяемый символ С1 в строку SO?
И как сделать проверку на цифровые символы?

Решение задачи: «Заменить в строке все цифровые символы нулями»

textual
Листинг программы
  1. predicates
  2.    nondeterm change(string,string)
  3.    nondeterm cyfra(char)
  4. clauses
  5.    cyfra('1').
  6.    cyfra('9').
  7.    change("","").
  8.    change(S,R):-
  9.     frontchar(S,H,T),
  10.     cyfra(X),H=X,!,
  11.     change(T,Tr),
  12.     frontchar(R,'0',Tr).
  13.    change(S,R):-
  14.     frontchar(S,H,T),
  15.     change(T,Tr),
  16.     frontchar(R,H,Tr).
  17. goal
  18.    change("as1231 3129312",X).

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


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

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

8   голосов , оценка 4.25 из 5

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

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

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