Структуры в прологе - Prolog

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

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

Помогите пожалуйста решить задачу в турбо прологе - Найти все отрезки, которые при вертикальном параллельном перемещении совпадают с одной из сторон треугольника. Реализовать с помощью структур. Пролог начал изучать недавно и не имею представления как решать эту задачу. Заранее спасибо.

Решение задачи: «Структуры в прологе»

textual
Листинг программы
  1. domains
  2. point=p(real,real)
  3. interval=i(point,point)
  4. otrlist=interval*
  5.  
  6. predicates
  7. otrezok(interval)
  8. storona(interval)
  9. parallel(interval,interval)
  10. list1(otrlist)
  11. addotr(otrlist,otrlist)
  12. checkotr(otrlist,otrlist)
  13. readotr(interval)
  14. runo(otrlist)
  15.  
  16. clauses
  17.  
  18. %--------Data Base---------
  19. otrezok(i(p(-1,-1),p(1,1))).
  20. otrezok(i(p(2,2),p(4,4))).
  21. otrezok(i(p(1,-1),p(-1,-1))).
  22. storona(i(p(0,0),p(2,2))).
  23. storona(i(p(0,0),p(2,0))).
  24. storona(i(p(2,0),p(2,2))).
  25.  
  26. %--------------Proverka na parallelnost`-----------------
  27. parallel(i(p(X1,Y1),p(X2,Y2)),i(p(X3,Y3),p(X4,Y4))):-X3-X1=X4-X2,Y3-Y1=Y4-Y2.
  28. parallel(i(p(X1,Y1),p(X2,Y2)),i(p(X3,Y3),p(X4,Y4))):-X4-X1=X3-X2,Y4-Y1=Y3-Y2.
  29.  
  30. %--------------BBoD otrezka c Klaviaturi----------------------------
  31. list1(L1):- findall(X, otrezok(X), L1).
  32. addotr(L1, L2):- write("Dobavit eche otrezok? (y/n)"), readchar(Ch), Ch = 'y', !, nl, readotr(Z), addotr([Z | L1], L2).
  33. addotr(L, L):-readchar(Ch),Ch='n',!,nl.    
  34. readotr(i(p(X1,Y1),p(X2,Y2))):- write("X1 = "), readint(X1), write("Y1 = "), readint(Y1), nl, write("X2 = "), readint(X2), write("Y2 = "), readint(Y2), nl,!.
  35. readotr(Z):- nl, write("Error! Repeat!"), readchar(_), nl, nl, readotr(Z).
  36.  
  37. %-------Proverka Bcex OTpe3KOB Ha parallelnost` co CToponami Tpeugolnika-----------
  38. checkotr([], []).                                                            
  39. checkotr([Tr1 | L1], [Tr1 | L2]):- storona(A),parallel(Tr1,A), !, checkotr(L1, L2).
  40. checkotr([_ | L1], L2):- checkotr(L1, L2).
  41.  
  42. runo(A):-list1(L1),addotr(L1,L2),checkotr(L2,A).

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


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

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

12   голосов , оценка 4.083 из 5

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

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

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