ЯЗык "Пролог". Понятие базы знаний, определение. Задачи и упражнения, страница 10


paзмeн2(OcтPaз^1eнятъ,Kyп5p,OcrЗp,Kyп1p,CпиcPaзмeнaOcraткa).

%Выдача рубля

размен2 (ИсхСумма,Куп5р,КупЗр.Куп1 р.СписРазмена):-ИсхСумма>0,Куп1р>0, разность (Куп1р,1,Ост1р), разность (ИсхСумма, 1 .ОстРазменять), конкат ([1],СписРазменаОстатка,СписРазмена), размен2 (ОстРазменять,Куп5р,КупЗр,Ост1р.СписРазменаОстатка).

конкат ([],Y,Y).

конкат ([Х|Х1],У,[Х|ХЗ]):-конкат (X1.Y.X3).

разность(Уменьшаемое,Вычитаемое,Остаток)>

Остаток=Уменьшаемое-Вычитаемое.

/*—Конец программы - "Размен денежных сумм"------ */

3.Задача решается аналогично той, которая приведена в тексте. Поэтому запишем только формулы. «Черный ящик» будет выглядеть так:


Правило будет иметь следующий вид: прилет(<час1>,<мн1>,<час2>,<мин2>,<час>,<мин>,<сут>).

В этой задаче возможны четыре различных случая:

Условия (по-русски)

Условия (матем.)

Формулы для расчета:

Самолет прилетает в тот же час и в те же сутки, что и вылетел

мин1+мин2<60 час1+час2<24

мин=мин1+мин2 час=час1+час2 сут=те_же_сутки

Есть переход суммы минут в следующий час, без перехода часов в следующие сутки

мин1+мин2>59 час1+час2+1<24

мин=мин1+мин2-60 час=час1+час2-Н сут=те_же_сутки

Нет перехода суммы минут в следующий час, но есть переход часов в следующие сутки

мин1+мин2<60 час1+час2+1>23

мин=мин1+мин2 час=час1+час2-24 сут=след_сутки

Есть переход суммы минут в следующий час и переход часов в следующие сутки

мин1+мин2>59 час1+час2+1>23

мин=мин1+мин2-60 час=час1+час2-23 сут=след_сутки

Например, для четвертого случая правило на Прологе будет такое: прилет(Час1,Мин1,Час2,Мин2,Час,Мин,след_сутки):-Мин1 +Мин2>59,Мин=Мин1 +Мин2-60,Час1 +Час2>23, Час=Час1+Час2-23.

Остальные правила и контрольные вопросы допишите сами. 4.остроуг(Имя)> кандидат(Имя,А,В,С), max3(A,B,C,D), квад-paT(D.P), квадрат(А,А2), квадрат(В,В2), квадрат(С,С2), К=А2+В2+С2, L=K-P, P<L.

5.Это следует из того, что для теоремы Пифагора обратная теорема также верна, то есть если для трех чисел верно, что с2 = а2 + Ь2, то они могут быть сторонами прямоугольного треугольника. Для тупоугольного треугольника из того, что с2 > а2 + Ь2 не следует, что с < а + Ь.


6.Здесь надо доказать, что если с2 < а2 + Ь2 => с < а + Ь. Действительно, так как стороны треугольника - положительные числа, с < а + b => с2 < (а + Ь)2 => с2 < а2 + 2ab +ь2. ab > 0 => а2 + 2ab +Ь2 > а2 + Ь2, т.е. с < а + Ь - условие более сильное, чем с2 < а2 + Ь2.

5. ВводивыводданныхнаПрологе 5.1. Встроенныепредикатыпреобразованиятипов

В Прологе существуют специальные функции для ввода и вывода данных. Эти функции реализуются при помощи встроенных предикатов. Перечислим их:

nl - переводит строку при вводе ивыводе данных;

readint(X) - считывает целое число и присваивает его переменной X;

readln(X) - вводит строку и присваивает ее переменной X;

write(A,B,C,...) - выводит на экран значения переменных А, В, С,..., причем значением переменной может быть как строка, так и число. Строки для вывода необходимо заключать в кавычки.

Например, правило:

работа:- write («Введитесвоеимя:»), геас!спаг(Имя), nl,

write(«flo6poe утро, », Имя), nl, write («ЯрадаВасвидеть»).

и вопрос

Цель: работа

даст следующий результат: