Поиск пар, где разница в возрасте мужа и жены не превышает 5 лет - Prolog

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

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

Мне нужно решить такую задачу. Найти все пары, где разница в возрасте мужа и жены не превышает 5 лет. У меня получился такой код, но компилятор ругается. Что я делаю не так?
Листинг программы
  1. domains
  2. person = p(string,integer,string,integer).
  3. predicates
  4. readperson(person).
  5. run(char,string,integer,string,integer,string,integer,string,integer).
  6. do(string,integer,string,integer).
  7. clauses
  8. readperson(p(Name,Age,Name1,Age1)) :- write("Name: "), readln(Name),
  9. write("Age: "), readint(Age),
  10. write("Name1"),readln(Name1),write("Age1"),readint(Age1), nl.
  11. run('y',Name,Age,Name1,Age1,X,Y,X1,Y1) :- readperson(p(_,Age,_,Age1)),abs(Age-Age1)<=5,
  12. write("Enter now? (y/n): "),
  13. readchar(Ch),run(Ch,_,_,_,_,X,Y,X1,Y1),!.
  14. run(_,_,Age,_,Age1,X,Y,X1,Y1).
  15. do(Name,Age,Name1,Age1) :- write("Enter now? (y/n): "),
  16. readchar(Ch),run(Ch,Name,Age,Name1,Age1,X,Y,X1,Y1).
  17. goal
  18. do(Name,Age,Name1,Age1),write(Name,Age,Name1,Age1),nl,fail.
Кстати, компилятор ругается на строке 11 перед Name. Пишет такую ошибку:708 Warning:The variable is not this clause.

Решение задачи: «Поиск пар, где разница в возрасте мужа и жены не превышает 5 лет»

textual
Листинг программы
  1. domains
  2. list=integer*.
  3. person=p(string,integer,string,integer).
  4. predicates
  5. readperson(person).
  6. run(char,list).
  7. do(person).
  8. clauses
  9. readperson(p(Name,Age,Name1,Ag1)):-write("Name:"), readln(Name),
  10.               write("Age"),readint(Age),
  11.               write("Name1"),readln(Name1),
  12.               write("Age1"),readint(Age1).
  13.               run('y',[p(_,A,_,A1)]):-readperson(p(_,A,_,A1)),abs(A-A1)<=5,
  14.               write("Read now&(y/n):"),
  15.               readchar(Ch),run(Ch,[H]),!.
  16.               do(p(M,N,M1,N1)):-write("Enter now&(y/n):"),
  17.               readchar(Ch),run(Ch,p(_,A,_,A1)).
  18.               do(p(M,N,M1,N1)),write(p(M,N,M1,N1)).

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


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

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

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

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

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

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