Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программы-1я тема.doc
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
101.38 Кб
Скачать

Include "zadacha_1.Inc"

facts

single count(integer,real)

single sr(real)

predicates

nondeterm Package(integer,integer,real)

nondeterm Do()

clauses

count(0,0.0).

sr(0.0).

Package(2,6,11.5).

Package(3,1,15.5).

Package(4,3

,5.5).

Package(5,1,20.0).

Do():- Package(_,_,V),count(N,W),N1=N+1,W1=W+V,assert(count(N1,W1)),fail.

Do():- count(N,W),M=W/N, assert(sr(M)),write(M), nl,fail.

Do():-Package(Nom,K,V),K=1,sr(M),V>M,nl,write(Nom," ",K," ",V),fail.

Do.

goal

Do(),nl,write(" THe end of facts").

Дан файл с фактами, які мають відомості про пошукові сервери: назву серверу, адресу, мови. Написати програму, яка поповнює відомості про сервери в файлі. Передбачити увід відомостей про декілька серверів за один сеанс роботи програми.

Include "laba2.Inc"

facts

Server(string,string,string)

predicates

nondeterm Doa

nondeterm Dor

nondeterm Do

goal

Consult("servers.dat"),Doa,Do,Save("servers.dat").

clauses

Doa:-nl,write("Введите название сервера, адресс и язык "),

readln(Naz),readln(Adr),readln(Mov),assertz(server(Naz,Adr,Mov)),fail.

Doa:-Dor.

Dor:-write("Добавить еще сервер(Y/N)? "),readchar(Ans),Ans='Y',Doa,fail.

Dor.

Do:-server(N,A,M),write(N," ",A," ",M),nl,fail.

Do.

Дан набір фактів з відомостями про речовини. Для кожної речовини вказано: назву речовини, її питому вагу і провідність (провідник, напівпровідник, ізолятор). Визначити чи є речовини з однаковими питомими вагами в різних групах. Визначити кількість таких речовин.

Facts

single count(integer)

Predicates

nondeterm Rech(string, real, string)

Do

Goal

Do.

Clauses

count(0).

Rech("Цианид",3.6, "Изолятор").

Rech("Алюминий",4.6,"Проводник").

Rech("Кремний",3.6,"Полупроводник").

Rech("Вода",1.0,"Проводник").

Rech("Пластмасса",4.6, "Изолятор").

Do:-Rech(_,Weight1,Type1),Rech(_,Weight2,Type2),Type1<>Type2,Weight1=Weight2,count(N),N1=N+1,assert(count(N1)),fail.

Do:-count(N1),write("Количество одинаковых весов - ",N1),nl.

Дан набір фактів, які мають відомості про іграшки: назву іграшки, її варту в копійках і вік дітей, для яких вона призначена. (Наприклад: для дітей від 2 до 5 років). Треба одержати максимальну і мінімальну ціни для певного виду іграшки.

Facts

single count(Real)

Predicates

Игрушка(String, Real, Integer, Integer)

Do

Goal

Do.

Clauses

count(0).

Игрушка("Слоник",4.5,2,5).

Игрушка("Слоник",5.0,2,5).

Игрушка("Слоник",4.3,2,5).

Игрушка("Лев",5.7,2,5).

Игрушка("Лев",8.3,2,5).

Игрушка("Лев",11.3,2,5).

Игрушка("Лев",9.3,2,5).

Do:-Игрушка("Лев",B,_,_),count(N1),B>N1,N2=B, assert(count(N2)),fail.

Do:-count(N),write(N).

Дан набір фактів, які мають відомості про іграшки: назву іграшки, її вартість в копійках і вік дітей, для яких вона призначена. (Наприклад: для дітей від 2 до 5 років). Треба одержати ціни всіх ляльок, які відрізняються від середньої ціни ляльки, не більш, чим на 1гривну 20 коп.

facts

single count(integer)

single sumpr(integer)

predicates

Toy(string,integer,integer,integer)

Price

goal

Price.

clauses

count(0).

sumpr(0).

Toy("Кукла",225,1,3).

Toy("Некукла",300,3,5).

Toy("Машинка",270,3,6).

Toy("Винярат-ходячий",350,10,15).

Toy("Кукла",400,5,10).

Toy("Кукла ",200,1,3).

Toy("Кукла ",210,1,3).

Price:-toy(M,Pr,_,_), count(N), sumpr(A), M=" Кукла ", N1=N+1, A1=A+Pr, assert(count(N1)), assert(sumpr(A1)), fail.

Price:-toy(M,Pr,_,_), count(N), sumpr(A), M=" Кукла ", abs(Pr-A/N)<120, write(M," ",Pr), nl, fail.

Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран прізвище студента, середній бал якого 4.0.

Predicates

Stud(string, real)

Do

Goal

Do.

Clauses

Stud(“Петренко”,4.5).

Stud(“Антонов”,4.0).

Stud(“Балаян”,4.3).

Do:- stud(Pr, 4.0), write(Pr).

Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран всі прізвища студентів, середній бал яких більше 4.0.

Predicates

Stud(string, real)

Do(real)

Goal

Do(4.0).

Clauses

Stud("Петренко",4.5).

Stud("Антонов",4.0).

Stud("Балаян",4.3).

Do(Bal):- stud(Pr, B), B>Bal,write(Pr),nl,fail.

Do(_).

Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран кількість студентів, середній бал яких більше 4.0.

Facts

single count(integer)

Predicates

Stud(string, real)

Do(real)

Goal

Do(4.0).

Clauses

count(0).

Stud("Іванов",4.5).

Stud("Василенко",4.0).

Stud("Коваленко",4.3).

Do(Bal):-stud(_,B),B>Bal,count(N),N1=N+1, assert(count(N1)), fail.

Do(_):-count(N),write(N).

Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран всі прізвища студентів, середній бал яких більше 4.0 або менше3.5.

Predicates

Stud(string, real)

Do(real,real)

Goal

Do(4.0, 3.5).

Clauses

Stud(“Петренко”,4.5).

Stud(“Антонов”,4.0).

Stud(“Балаян”,3.2).

Do(Bal1,Bal2):-stud(Pr,B), B>Bal1,write(Pr),nl,fail;

stud(Pr, B), B<Bal2,write(Pr),nl,fail.

Do(_,_).

.Відсортувати факти по кількості речей у пасажирів (у порядку зростання)

Facts-nosort

mesto(integer, integer)

Facts-sort

mesto1(integer, integer)

Predicates

sort

min(integer)

Goal

consult ("F.dat", nosort), sort, save("F.dat", sort).

Clauses

sort:- mesto(_, Kol), min(Kol), sort.

sort.

min(Kol):- mesto(_,Kol1), Kol1 < Kol, min (Kol1).

min(Kol):-mesto(N, Kol),

assertz(mesto1(N, Kol), sort), retract(mesto(N, Kol), nosort).

Файл F.dat містить факти:

mesto(1,5)

mesto(2,1)

mesto(3,4)

mesto(4,6)