Найти длины высот треугольника - Prolog
Формулировка задачи:
Что-то не хочет запускаться у меня программа Турбо Пролог. Возможно вина пиратской винды 7. Потому у меня вопрос к знающим.
Условие задачи:
Длины сторон треугольника а, b, c. Найдите длины Нa,Нb,Нc его высот.
Решение.
Найдем площадь по формуле Герона p=(a+b+c)/2, s=sqrt(p*(p-a)*(p-b)*(p-c)). И высоты по формулам Ha=2*s/a, Hb=2*s/b, Hc=2*s/c.
Тест1 (a=3,b=4,c=5 ответ Ha=4,Hb=3,Hc=2.4)
Тест2 (a=5,b=4,c=5 ответ Ha=3.66,Hb=4.58,Hc=3.66)
Листинг программы
- predicates
- Plosh(integer, integer, integer, integer)
- clauses
- Plosh(p, a, b, c):-p=(a+b+c)/2.
- goal
- Plosh(p, 3, 4, 5).
- predicates
- Plos(integer, integer, integer, integer, integer)
- clauses
- Plos(s, p, a, b, c):-s=sqrt(p*(p-a)*(p-b)*(p-c)).
- goal
- Plos(s, p, 5, 4, 5).
- predicates
- vys (integer, integer, integer, integer, integer)
- clauses
- vys (На, s, a, b, c):- Ha=2*s/a.
- vys (Нb, s, a, b, c):- Hb=2*s/b.
- vys (Нc, s, a, b, c):- Hc=2*s/c.
- goal vys (На, Нb, Hc).
Решение задачи: «Найти длины высот треугольника»
textual
Листинг программы
- predicates
- area(real, real, real, real)
- height(real,real,real)
- task(real,real,real)
- clauses
- area(A,B,C,S) :- P=(A+B+C)/2, S=sqrt(P*(P-A)*(P-B)*(P-C)).
- height(A,S,H) :- H=2*S/A.
- task(A,B,C) :- A<B+C, B<A+C, C<A+B, area(A,B,C,S),
- height(A,S,HA), write("Ha="),write(HA),nl,
- height(B,S,HB), write("Hb="),write(HB),nl,
- height(C,S,HC), write("Hc="),write(HC),nl.
- task(A,B,C) :- write("Bad data"),nl,fail.
- goal
- task(3,4,5).
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д