Вывести дискриминант в предикат - Prolog

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

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

Есть программа на турбо прологе, решающая квадратное уравнение.
Листинг программы
  1. predicates
  2. equ
  3. solve(real,real,real)
  4. clauses
  5. equ:-
  6. write("введите значения переменных для решения квадратного уравнения вида ax*x+bx+c=0"), nl,
  7. write("введите значение а"), nl,
  8. readreal(A),
  9. write("введите значение b"), nl,
  10. readreal(B),
  11. write("введите значение c"), nl,
  12. readreal(C),solve(A,B,C).
  13. solve(A,B,C):-
  14. A = 0,!, write("A=0 => X="), X = -C/B, write(X).
  15. solve(A,B,C):-D=B*B-4*A*C, D < 0, !,write("D<0 => корней нет").
  16. solve(A,B,C):-D=B*B-4*A*C,D = 0,!, write("D=0 => X1=X2="), X =-B/(2*A), write(X).
  17. solve(A,B,C):-D=B*B-4*A*C,X1 =(-B+sqrt(D))/(2*A) ,X2 =(-B-sqrt(D))/(2*A), write("D>0 => X1="),
  18. write(X1), write(" X2="), write(X2).
  19. goal
  20. equ.
Необходимо вывести дискриминант отдельно в предикат, т.е. не писать так постоянно solve(A,B,C):-D=B*B-4*A*C , а вывести где то формулу в предикате и дальше этот предикат писать... Я думала что так:
Листинг программы
  1. predicates
  2. equ
  3. solve(real,real,real)
  4. disc(real)
  5. clauses
  6. disc:-B*B-4*A*C.
  7. equ:-
  8. write("введите значения переменных для решения квадратного уравнения вида ax*x+bx+c=0"), nl,
  9. write("введите значение а"), nl,
  10. readreal(A),
  11. write("введите значение b"), nl,
  12. readreal(B),
  13. write("введите значение c"), nl,
  14. readreal(C),solve(A,B,C).
  15. solve(A,B,C):-
  16. A = 0,!, write("A=0 => X="), X = -C/B, write(X).
  17. solve(A,B,C):-disc(D), D < 0, !,write("D<0 => корней нет").
  18. solve(A,B,C):-disc(D),D = 0,!, write("D=0 => X1=X2="), X =-B/(2*A), write(X).
  19. solve(A,B,C):-disc(D),X1 =(-B+sqrt(D))/(2*A) ,X2 =(-B-sqrt(D))/(2*A), write("D>0 => X1="),
  20. write(X1), write(" X2="), write(X2).
  21. goal
  22. equ.
но так не работает...

Решение задачи: «Вывести дискриминант в предикат»

textual
Листинг программы
  1. predicates  
  2. disc(real, real, real, real)
  3. clauses
  4. disc(A, B, C, D) :-
  5.     D = B*B-4*A*C

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


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

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

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

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

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

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