Здравствуйте! нужно добавить аргументы к предикатам!(visual prolog 5.2)

      Комментарии к записи Здравствуйте! нужно добавить аргументы к предикатам!(visual prolog 5.2) отключены

Главная Форумы Программирование Помощь с решением задач на Prolog Работа с базами данных в Prolog Здравствуйте! нужно добавить аргументы к предикатам!(visual prolog 5.2)

В этой теме 1 ответ, 2 участника, последнее обновление  Васильев Владимир Сергеевич 1 неделя, 5 дн. назад.

  • Автор
    Сообщения
  • #3551

    ANTON12
    Участник

    Добрый День! Задача состоит в создании программы, содержащей базу данных о расписании занятий группы студентов в университете. Эта программа должна отвечать на вопросы, наподобие приведенных ниже:

    1. Занят ли лектор Иван Иванович Иванов в понедельник в 9 часов?
    2. В каком корпусе университета находится 456 аудитория?
    3. Занята ли 456 аудитория во вторник в 16 часов?

    Часть решения я написал. Осталось добавить аргументы предикаты к rules1,rules2,rules3) Кто может помочь??

    domains 
      crs,day,room,building=symbol 
      length,t=integer 
      time=time(symbol,integer,integer) 
      lect=lect(symbol,symbol,symbol) 
      loc=loc(symbol,symbol) 
    
    predicates 
      course(crs,time,lect,loc) 
      lecturer(lect,crs) 
      duration(crs,length) 
      occupied(room,day,t) 
      location(room,building) 
      busy(lect,day,t) 
      rule1 
      rule2 
      rule3 
    clauses 
      lecturer(Lecturer,Course):- 
        course(Course,_,Lecturer,_). 
      
      duration(Course,Length):- 
        course(Course,time(_,Start,Finish),_,_), 
        Length=Finish-Start. 
      
      occupied(Room,Day,Time):- 
        course(_,time(Day,Start,Finish),_,loc(_,Room)), 
        Start<=Time,Time<=Finish. 
      
      location(Room,Building):- 
        course(_,_,_,loc(Building,Room)). 
      
      busy(Lecturer,Day,Time):- 
        course(_,time(Day,Start,Finish),Lecturer,_), 
        Start<=Time,Time<=Finish. 
      
      course(matematica,time(poned,9,12),lect(ivanov,ivan,ivanuc),loc(old,a_211)). 
      course(programirovanie,time(vtor,15,17),lect(sydorov,sydor,sydorovic),loc(new,a_456)). 
      course(fizika,time(sr,8,14),lect(abramov,abram,abramovic),loc(old,a_325)). 
      
      rule1:- 
        busy(lect(Ivanov,Ivan,Ivanuc),poned,13),write("Yes"),nl; 
        write("No"),nl. 
      rule2:- 
        location(a_456,B),write(B),nl; 
        write("No such room"),nl. 
      rule3:- 
        occupied(a_456,vtor,16),write("Yes"),nl; 
        write("No"),nl. 
    
    goal 
      %busy(lect(Ivanov,Ivan,Ivanuc),poned,13). 
      %location(a_456,B). 
      occupied(a_456,vtor,11). 
      rule1, rule2, rule3.

  • #3555

    Если в таком виде заданы ваши факты:
    course(matematica, time(poned, 9, 12), lect(ivanov, ivan, ivanuc), loc(old, a_211)).

    То чтобы получить информацию об аудитории вы можете только так:
    course(_, _, _, loc(Campus, a_456)).

    Аналогично решаются все остальные ваши задачи. Опишите в чем именно проблемы.

Для ответа в этой теме необходимо авторизоваться.