Вычисление значения алгебраической суммы, заданной строкой - Prolog

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

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

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

Решение задачи: «Вычисление значения алгебраической суммы, заданной строкой»

textual
Листинг программы
  1. predicates
  2. calc_s(string,integer,integer,integer)
  3. calc(string,integer)
  4.  
  5. clauses
  6. calc_s("",Z,A,R):- R=A*Z.  
  7. calc_s(S,Z,A,R) :- frontchar(S,C,SS), C='+', calc_s(SS,1,0,R1), R=R1+A*Z, !.
  8. calc_s(S,Z,A,R) :- frontchar(S,C,SS), C='-', calc_s(SS,-1,0,R1), R=R1+A*Z, !.
  9. 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), !.
  10.  
  11. calc(S,R) :- calc_s(S,1,0,R).

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


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

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

6   голосов , оценка 3.833 из 5

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

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

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