- угол между сторонами аи Ь. Пусть с - наибольшая из сторон (или одна из них, если треугольник равнобедренный). Тогда в тупоугольном треугольнике с2 > а2 + Ь2, а в остроугольном - с2 < а2 + Ь2. Для тупоугольного треугольника правило на Прологе будет таким:
тупоуг(Имя):- кандидатами,А,В,С), треуг(Имя), max3(A,B,C,D), квадрат(О,Р), квадрат(А,А2), квадрат(В,В2), квадрат(С,С2), К=А2+В2+С2, L=K-P, P>L.
Программа, решающая данную задачу, может быть такой:
% БАЗА ЗНАНИЙ "ТРЕУГОЛЬНИКИ"
% Определение вида треугольника
% (Используется теорема Пифагора)
/*************♦****♦***************♦♦********♦*******«***/
domains
HMfl=symbol %"имя" - вершины кандидата в треугольники число=геа1 %"число" - стороны кандидата в треугольники
predicates
кандидат(имя,число,число,число)
макс(число,число,число)
максЗ(число,число,число,число)
треугольник(имя)
прямоугольный(имя)
тупоугольный(имя)
равнобедренный(имя)
остроугольный(имя)
clauses
кандидат(аЬс,3,4,5). кандидат^ет,7,5,11). кандидат(тпр,4,3,8).
% Максимум из двух чисел:
% max(a,b)=a, при а>=Ь,
% max(a,b)=b, при а<Ь.
макс(А,В,А):-А>=В,!. макс(А,В,В).
У*************..***..*******..*...*****......*****.**.***,
% Максимум из трех чисел
максЗ(А,В,С,М):макс(А,В,О),макс(О,С,М).
I********************************************************!
% Кандидат в треугольники является треугольником, если % каждая его сторона меньше суммы двух других сторон
треугольник(Имя):кандидат(Имя,А,В,С),максЗ(А,В,С,М),Р=А+В+С,М<Р-М.
прямоугольный(Имя):кандидат(Имя,А,В,С),максЗ(А,В,С,М),
М*М=А*А+В*В+С*С-М*М,!. тупоугольный(Имя):кандидат(Имя,А,В,С),треугольник(Имя),максЗ(А,В,С,М),
М*М>А*А+В*В+С*С-М*М,!. равнобедренный(Имя):кандидат(Имя,А,В,С),А=В;
кандидат(Имя,А,В,С),А=С;
кандидат(Имя,А,В,С),В=С,!. остроугольный(Имя):кандидат(Имя,А,В,С),треугольник(Имя),максЗ(А,В,С,М),
М*М<А*А+В*В+С*С-М*М,!.
4.4. Задачииупражнения
1. Написать правило для вычисления:
а) арифметического корня четвертой степени;
б; вычисление площади треугольника по заданным сторонам и углу между ними.
2 Написать программу на Прологе, реализующую размен денег купюрами по 5, 3 и 1 рублю с учетом количества купюр разного достоинства.
3. Написать программу на Прологе для вычисления времени прибытия самолета в пункт назначения, если известно время вылета и время нахождения в пути. Все времена даны в ча сах и минутах московского времени. При решении следует учесть возможность перехода в следующие сутки.
4. Написать правило для определения остроугольного треугольника.
5 Почему в правиле для прямоугольного треугольника отсутст вовала, а для тупоугольного - присутствует проверка того, что это треугольник?
6 Доказать, что для остроугольного треугольника можно также • не проводить проверку «на треугольник».
ОТВЕТЫ И РЕШЕНИЯ
1 a) KopeHb4(X,X4):-X4=sqrt(sqrt(X)). б)площадь(Стор1,Стор2,Угол,Площадь)> Площадь=Стор1 *Стор2*з1п(Угол)/2 2.Программа может быть такой: /* "Размен денежных сумм" */
domains
4Hcno=integer
список=число*
predicates
размен2(число,число,число,число, список) размен2
разность (число,число,число) конкат (список,список,список)
clauses
размен2>
makewindow (1,15,15,"Размен денег",0,0,25,40), write ("Введите сумму:"),nl.readint (ИсхСумма),п1, write ("Введите количество py6neu:"),nl,readint (Kyn1p),nl, write ("Введите количество трешек:"),nl.readint (Kyn3p),nl, write ("Введите количество пятерок"),nl.readint (Kyn5p),nl, размен2 (ИсхСумма,Куп5р,КупЗр,Куп1р,СписРазм), write ("Получите: ",CnncPa3M),readchar(_).
%Если вся сумма выдана, размен кончается размен2 (0,_,_,_,[]).
%Выдача пяти рублей
размен2 (ИсхСумма,Куп5р,КупЗр,Куп1р,СписРазмена) - . ИсхС,умма>4,Куп5р>0,разность (Куп5р,1 ,Ост5р), разность(ИсхСумма,5,ОстРазменять), конкат([5],СписРазменаОстатка,СписРазмена), размен2(ОстРаз1^юнять,Ост5р,КупЗр,Куп1р,СписРазменаОстатка).
у****************************.********************.************/
%Выдача трех рублей
размен2 (ИсхСумма,Куп5р,КупЗр,Куп1р,СписРазмена)> ИсхСумма>2,КупЗр>0,разность (КупЗр,1,ОстЗр), разность (ИсхСумма,3,ОстРазменять), конкат([3],СписРазменаОстатка,СписРазмена),
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.