Арифметические операции (Степень и сумма) - Prolog

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

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

Нужно написать программу (Turbo Prolog) для вычисления: Вот, что сам написал, но выдает ошибку:
Листинг программы
  1. domains
  2. int=real
  3. predicates
  4. y(int,int,int,int)
  5. st(int,int,int,int,int)
  6. stw(int,int,int,int,int)
  7. yw(int,int,int)
  8. clauses
  9. y(X,_,_,Y):-
  10. X<2,
  11. Y = X*0,!.
  12. y(X,N,M,Y):-
  13. st(X,N,M,K,Y).
  14.  
  15. st(X,N,M,K,Y):-N1 = N-1,
  16. st(X,N1,M,K1,Y), K=K1*X, stw(X,K,M,J,Y).
  17.  
  18. stw(X,M,K,J,Y):-M1=M-1,
  19. stw(X,M1,K,J1,Y), J=J1*X, yw(K,J,Y).
  20. yw(K,J,Y):- Y=K+J.
Ошибка:

1002 Stack overflow. Re-configure with Options if necessary.

Как можно исправить?

Решение задачи: «Арифметические операции (Степень и сумма)»

textual
Листинг программы
  1. predicates
  2. y(real,integer,integer,real)
  3. pow(real,integer,real)
  4.  
  5. clauses
  6.  
  7. pow(X,K,R) :- L=LN(X), R=exp(L*K).
  8.  
  9. y(X,_,_,2.0) :- X<2.
  10. y(X,N,M,R)   :- X>2, pow(X,N,R1), pow(X,M,R2),R=R1+R2.
  11. y(2.0,_,_,0).

Объяснение кода листинга программы

  1. В коде присутствуют три предиката:
    • pow(real,integer,real), который вычисляет степень числа
    • y(real,integer,integer,real), который выполняет проверку и вычисляет результат арифметических операций
    • LN(real), который вычисляет натуральный логарифм числа
  2. В первом утверждении предиката pow(X,K,R) вычисляется степень числа X в K раз. Значение переменной R вычисляется как экспонента от произведения натурального логарифма числа X и целого числа K.
  3. Во втором утверждении предиката y(X,N,M,R) выполняется проверка, что число X больше 2, затем вычисляются значения переменных R1 и R2 с помощью предиката pow(X,N,R1) и предиката pow(X,M,R2). Затем значение переменной R вычисляется как сумма R1 и R2.
  4. В третьем утверждении предиката y(2.0,,,0) выполняется проверка, что число X равно 2.0, и значение переменной R устанавливается равным 0.
  5. В четвёртом утверждении предиката y(2.0,,,0) выполняется проверка, что число X равно 2.0, и значение переменной R устанавливается равным 0.

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


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

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

7   голосов , оценка 4.571 из 5

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

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

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