Вычисление значения алгебраической суммы, заданной строкой - Prolog
Формулировка задачи:
Пусть дана последовательность литер, имеющая вид d1+-d2+-d3+-… +-dn (di – цифры, n>1). Напишите программу вычисления значения этой алгебраической суммы. Например,вводим: 2+3–2+1, получаем: 2+3–2+1=4. Помогите, пожалуйста решить задачу, у меня не получается провести операции (удалось только проверить символ по поду), вот что у меня получилось:
Листинг программы
- trace
- predicates
- str(string,integer,string)
- goal str("1+2",X,Y), write(X,Y).
- clauses
- str("",_,"").
- str(Es,Res,Fin):-frontchar(Es,Head,Tail),
- str(Tail,Res1,Fin1),!,
- %Head>='0',Head<='9',!,
- Res=Head-48. %(для цифр) а вот как дальше выполнить операции с ней (и следующими) я не знаю
Решение задачи: «Вычисление значения алгебраической суммы, заданной строкой»
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).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д