Сумма чётных цифр в строке - Prolog

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

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

Здравствуйте!

Помогите пожалуйста доработать программу. Ошибка вроде элементарная, но я не могу понять как её исправить.

Задача:

Цепочки символов (строки) создаются по следующему правилу. Первая строка состоит из одного символа – цифры «1». Каждая из последующих цепочек создается следующим действием: в очередную строку дважды записывается предыдущая цепочка цифр (одна за другой, подряд), а в конец приписывается еще одно число – номер строки по порядку (на i-м шаге дописывается число «i»). Вот первые 4 строки, созданные по этому правилу: (1) 1 (2) 112 (3) 1121123 (4) 112112311211234 Написать определение строки и запрос, позволяющий узнать, сколько раз в общей сложности встречаются в j-й строке четные цифры (2, 4, 6, 8)?

Листинг программы
  1. domains
  2. lane = string
  3. int = integer
  4. predicates
  5. form_str (int, lane) % формирует строку (int - номер строки, lane - строка)
  6. find (int, int) % формирует строку и производит сумму элементов в строке (int - номер строки, int - сумма элементов)
  7. find_in (lane, int) % ищет сумму элементов в строке (lane - строка, int - сумма элементов)
  8. clauses
  9. form_str (1, "1").
  10. form_str (N, X) :-
  11. N>0, N1 = N-1, form_str (N1, Y), concat (Y, Y, X0),
  12. str_int (Nstr, N), concat (X0, Nstr, X).
  13. find_in ("", 0).
  14. find_in (X, Sum) :-
  15. frontchar (X, X1, X2), X1 mod 2 = 0,
  16. Sum1 = Sum + X1, find_in (X2, Sum1).
  17. find_in (X, Sum) :-
  18. frontchar (X, X1, X2), X1 mod 2 <> 0,
  19. find_in (X2, Sum).
  20. find (N, Sum) :-
  21. form_str (N, X),
  22. find_in (X, Sum).
Ошибка "

Fre variable in expression

" в 16-ой строке (

Sum1 = Sum + X1

). Ошибка не при компиляции, а при запуске программы, т.к.

Sum

не конкретизирована, но как это сделать, я не знаю. Вроде конкретизировал же в базисе рекурсии? Может я ещё как-то не очень грамотно или эффективно прогу написал, выслушаю критику, желательно прямо с кодом исправленным)

Решение задачи: «Сумма чётных цифр в строке»

textual
Листинг программы
  1. Sum = Sum1 + X1

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


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

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

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

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

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

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