Вычисление значения алгебраической суммы, заданной строкой - Prolog
Формулировка задачи:
Пусть дана последовательность литер, имеющая вид d1+-d2+-d3+-… +-dn (di – цифры, n>1). Напишите программу вычисления значения этой алгебраической суммы. Например,вводим: 2+3–2+1, получаем: 2+3–2+1=4. Помогите, пожалуйста решить задачу, у меня не получается провести операции (удалось только проверить символ по поду), вот что у меня получилось:
Решение задачи: «Вычисление значения алгебраической суммы, заданной строкой»
textual
Листинг программы
predicates
calc_s(string,integer,integer,integer)
calc(string,integer)
clauses
calc_s("",Z,A,R):- R=A*Z.
calc_s(S,Z,A,R) :- frontchar(S,C,SS), C='+', calc_s(SS,1,0,R1), R=R1+A*Z, !.
calc_s(S,Z,A,R) :- frontchar(S,C,SS), C='-', calc_s(SS,-1,0,R1), R=R1+A*Z, !.
calc_s(S,Z,A,R) :- frontchar(S,C,SS), char_int(C,U),B=A*10+(U-48), calc_s(SS,Z,B,R), !.
calc(S,R) :- calc_s(S,1,0,R).