Turbo Prolog. Преобразование списка символов в строку
Формулировка задачи:
Всем привет. Нужно преобразовать список символов в строку и есть небольшая загвоздка.
Код программы:
Если запускать в таком варианте, то ругается на concat(S,Sn,Sm). Если добавить что S="", то программа работает, но не выдает результата. В чём может быть проблема?
Решение задачи: «Turbo Prolog. Преобразование списка символов в строку»
textual
Листинг программы
to_str([], R, R). to_str([H|T], Acc, R):- str_char(S, H), concat(Acc, S, NewAcc), to_str(T, NewAcc, R).
Объяснение кода листинга программы
- Функция
to_str
принимает три аргумента: список символов, строку-аккумулятор и флаг ошибки. - Если список пуст, то возвращается исходная строка-аккумулятор без изменений.
- Если список не пуст, то:
- вызывается процедура
str_char
для преобразования первого символа списка в строку. - вызывается процедура
concat
для объединения строки-аккумулятора и строки символа. - результат сохраняется в новом аккумуляторе.
- рекурсивно вызывается функция
to_str
для обработки оставшейся части списка с новым аккумулятором.
- вызывается процедура
- Значения переменных:
S
- строка символа.H
- первый символ из списка.T
- оставшаяся часть списка.Acc
- строка-аккумулятор.NewAcc
- новый аккумулятор после объединения.R
- флаг ошибки.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д