Вывести дискриминант в предикат - Prolog
Формулировка задачи:
Есть программа на турбо прологе, решающая квадратное уравнение.
Необходимо вывести дискриминант отдельно в предикат, т.е. не писать так постоянно solve(A,B,C):-D=B*B-4*A*C , а вывести где то формулу в предикате и дальше этот предикат писать...
Я думала что так:
но так не работает...
Листинг программы
- predicates
- equ
- solve(real,real,real)
- clauses
- equ:-
- write("введите значения переменных для решения квадратного уравнения вида ax*x+bx+c=0"), nl,
- write("введите значение а"), nl,
- readreal(A),
- write("введите значение b"), nl,
- readreal(B),
- write("введите значение c"), nl,
- readreal(C),solve(A,B,C).
- solve(A,B,C):-
- A = 0,!, write("A=0 => X="), X = -C/B, write(X).
- solve(A,B,C):-D=B*B-4*A*C, D < 0, !,write("D<0 => корней нет").
- solve(A,B,C):-D=B*B-4*A*C,D = 0,!, write("D=0 => X1=X2="), X =-B/(2*A), write(X).
- 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="),
- write(X1), write(" X2="), write(X2).
- goal
- equ.
Листинг программы
- predicates
- equ
- solve(real,real,real)
- disc(real)
- clauses
- disc:-B*B-4*A*C.
- equ:-
- write("введите значения переменных для решения квадратного уравнения вида ax*x+bx+c=0"), nl,
- write("введите значение а"), nl,
- readreal(A),
- write("введите значение b"), nl,
- readreal(B),
- write("введите значение c"), nl,
- readreal(C),solve(A,B,C).
- solve(A,B,C):-
- A = 0,!, write("A=0 => X="), X = -C/B, write(X).
- solve(A,B,C):-disc(D), D < 0, !,write("D<0 => корней нет").
- solve(A,B,C):-disc(D),D = 0,!, write("D=0 => X1=X2="), X =-B/(2*A), write(X).
- solve(A,B,C):-disc(D),X1 =(-B+sqrt(D))/(2*A) ,X2 =(-B-sqrt(D))/(2*A), write("D>0 => X1="),
- write(X1), write(" X2="), write(X2).
- goal
- equ.
Решение задачи: «Вывести дискриминант в предикат»
textual
Листинг программы
- predicates
- disc(real, real, real, real)
- clauses
- disc(A, B, C, D) :-
- D = B*B-4*A*C
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д