Дизъюнкция целей: вывести фамилии студентов, родившихся зимой - Prolog

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

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

Добрый день. Стоит следующая задача на Turbo Prolog: о студентах известны их ФИО и даты рождения. Нужно вывести студентов, родившихся зимой. И собственно проблема в том, что порядковые номера зимних месяцев не идут последовательно и задать их промежутком невозможно,а дизъюнкция целей не работает:
Відает ошибку "')' or ',' expected) в последней строке, где Y=1. Как в таком случае правильно организовать логическое "ИЛИ"?

Решение задачи: «Дизъюнкция целей: вывести фамилии студентов, родившихся зимой»

textual
Листинг программы
domains
    i = integer
    s = symbol
predicates
    student(s,i,i,i)
clauses
    student("February Student",23,2,1997).
    student("January Student",7,1,1995).
    student("December Student",31,12,1996).
    student("March Student",2,3,1998).
    student("October Student",20,10,1994).
    student("November Student",12,11,1995).
goal
    student(X,A,Y,Z), Y=1, write(X," ",A,".",Y,".",Z),nl,fail;  student(X,A,Y,Z), Y=2, write(X," ",A,".",Y,".",Z),nl,fail; student(X,A,Y,Z), Y=12, write(X," ",A,".",Y,".",Z),nl,fail.

Объяснение кода листинга программы

  1. В коде используется язык программирования Prolog.
  2. Код содержит два домена: i = integer (целое число) и s = symbol (символ).
  3. Есть одна цель - вывести фамилии студентов, родившихся зимой.
  4. В коде есть пять утверждений (clauses) о студентах, каждое из которых описывает одного студента.
  5. Утверждения содержат информацию о фамилии студента (первый аргумент), месяце его рождения (второй аргумент), годе его рождения (третий аргумент) и его ID (четвертый аргумент).
  6. В утверждениях используются символы для представления фамилий студентов.
  7. В цели (goal) используются шесть выражений, которые проверяют, является ли месяц рождения студента зимним (декабрь, январь или февраль).
  8. Если месяц рождения студента зимний, то выводится информация о студенте в формате Фамилия студента Поле 1 Поле 2 Поле 3, где Поле 1 - это месяц рождения, Поле 2 - это год рождения, Поле 3 - это ID студента.
  9. Если месяц рождения студента не зимний, то ничего не выводится.
  10. В коде используется ключевое слово fail для обработки случаев, когда не найдены студенты, родившиеся зимой.

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


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

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

15   голосов , оценка 3.8 из 5
Похожие ответы