Арифметическая операция в условии поиска - Prolog
Формулировка задачи:
Здравствуйте!
Требуется вывести информацию о всех книгах, изданных Х лет назад. Поле "год издания" предпоследнее в каждой записи.
X вводится с клавиатуры.
Для начала использовал вот такой работающий, но упрощенный код - вводим год издания и выводим список книг, изданных раньше этого года. В данном случае выводим только код книги и год издания, чтобы не загромождать код.
Все работает. Для сравнения символьных строк используется оператор "@<". С простым "<" не работает.
А вот все попытки прикрутить туда арифметику, вводя число лет и вычитая из 2016 это число ни к чему не привели.
Пробовал и вот так:
И вот так:
Но это не работает.
В чем может быть загвоздка? Подскажите пожалуйста!
Здравствуйте!
Есть вопрос по поиску во внутренней базе данных. Используется Arity Prolog, хотя он тут и не популярен.
База такая, данные о книгах библиотеки:
Листинг программы
- book($001$,$ГОГОЛЬ Н.В.$,$МЕРТВЫЕ ДУШИ$,$МОСКВА$,$ДРОФА$,$2005$,$155$).
- book($002$,$ДОСТОЕВСКИЙ Ф.М.$,$ПРЕСТУПЛЕНИЕ И НАКАЗАНИЕ$,$МОСКВА$,$АЛЬФА-КНИГА$,$2000$,$65$).
- book($003$,$ТОЛСТОЙ Л.Н.$,$ВОЙНА И МИР$,$САНКТ-ПЕТЕРБУРГ $,$АМФОРА$,$2001$,$500$).
- book($004$,$ПУШКИН А.С.$,$ЕВГЕНИЙ ОНЕГИН$,$МОСКВА$,$АГРАФ$,$2003$,$100$).
- book($005$,$ЧЕХОВ А.П.$,$ВИШНЕВЫЙ САД$,$САНКТ-ПЕТЕРБУРГ$,$ПИТЕР$,$2006$,$60$).
Листинг программы
- s:-
- cls,
- reconsult('book.txt'),
- g1.
- g1:-
- write('Y-> '), read_line(0,Y),
- book(Kod,Avtor,Nazvanie,Mesto,Izdatel,God,Str),
- God@<Y,
- write(Kod),write(' | '), write(God),nl,fail.
Листинг программы
- g1:-
- write('Y-> '), read_line(0,Y),
- book(Kod,Avtor,Nazvanie,Mesto,Izdatel,God,Str),
- X is 2016 - Y,
- God@< X,
- write(Kod),write(' | '), write(God),nl,fail.
Листинг программы
- g1:-
- write('Y-> '), read_line(0,Y),
- book(Kod,Avtor,Nazvanie,Mesto,Izdatel,God,Str),
- year_inp(Y,X),
- God@< X,
- write(Kod),write(' | '), write(God),nl,fail.
- inp_year(Y,X):- X is 2016 - Y.
Решение задачи: «Арифметическая операция в условии поиска»
textual
Листинг программы
- ...
- read_line(0,Y),
- int_text(YInt,Y),
- ...
- book(Kod,Avtor,Nazvanie,Mesto,Izdatel,God,Str),
- int_text(GodInt,God),
- ...
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д