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

Include "lab1.Inc"

Facts

single max(integer)

single min(real)

single countr(integer)

single count(integer)

single count1(integer)

server(string,string,string)

Predicates

nondeterm Bagg(integer, integer, real)

nondeterm Domax()

nondeterm Domin()

nondeterm Group(string)

Goal

Consult("base.dat"),write("Write language: "),readln(A),Group(A),nl.

Clauses

max(0).

min(10000000.0).

countr(0).

count(0).

count1(0).

Bagg(1,2,4.5).

Bagg(2,1,4.0).

Bagg(3,1,4.3).

Bagg(4,2,3.9).

Bagg(5,3,7.6).

Domax():-bagg(_,W,_),max(M),W>M,M1=W, assert(max(M1)), fail.

Domax():-bagg(_,W,_),max(M),countr(R),M=W,R1=R+1,assert(countr(R1)),fail.

Domax():-countr(N),N>1,write("Condition is not satisfied") or countr(N),N=1, max(M), write(M).

Domin():-bagg(_,C,W),min(M),W<M,C=1,M1=W, assert(min(M1)), fail.

Domin():-min(N),N=0,write("Condition is not satisfied") or min(N),N<10000000.0,write(N).

%Group():-server(_,_,_), count(C),C1=C+1,assert(count(C1)),fail.

Group(L):-server(N1,A1,L)/*,count1(C),count(C1),C<C1,C2=C+1,assert(count1(C2)),*/, write(L," ",N1," ",A1),nl,fail.

Group(_).

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

Project: 1_NELINA(14V)

FileName: 1_NELINA(14V).PRO

Purpose: No description

Written by: Visual Prolog

Comments:

******************************************************************************/

Include "1_nelina(14v).Inc"

Predicates

Вещество(string, real,string )

Do(string)

Goal

Do(" проводник").

Clauses

conct([],L,L).

conct(L,[],L).

conct([A|B],[C|D],[A|L]):- A < C, conct(B,[C|D],L).

conct([A|B],[C|D],[C|L]):- C=< A, conct([A|B],D,L).

Вещество("углерод ", 12.01, " проводник").

Вещество("германий ",72.59, " полупроводник").

Вещество("цинк ", 65.39, " проводник").

Вещество("кремний ",28.086, " полупроводник").

Вещество("бензол ",78.11, " диэлектрик").

Do(П):- Вещество(Н, В, Пр), Пр=П, write(Н,В,Пр),nl,fail.

Do(_).

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

Global facts

single raznica(integer, integer)

Predicates

nondeterm toy(string, integer, integer, integer)

nondeterm max()

nondeterm min()

nondeterm do()

Goal

max(),

min(),

do.

Clauses

toy("konstructor1", 2, 5, 100).

toy("konstructor2", 2, 5, 45).

toy("konstructor3", 2, 5, 30).

toy("konstructor4", 2, 5, 25).

toy("konstructor5", 2, 5, 75).

toy("konstructor6", 2, 5, 90).

raznica(0, 100500).

max():-toy(_,_,_,Cena), raznica(A,B), Cena > A, assert(raznica(Cena, B)), fail.

max():-raznica(Cena,B), toy(N,_,_,Cena), write("Maksimal'naya stoimost: "), nl, write(N," ",Cena), nl, nl.

min():-toy(_,_,_,Cena), raznica(A,B), Cena < B, assert(raznica(A, Cena)), fail.

min():-raznica(A,Cena), toy(N,_,_,Cena), write("Minimal'naya stoimost: "), nl, write(N," ",Cena), nl, nl.

do:-raznica(A,B), C=A-B, write("Raznica cen = ",C).

Дан файл с фактами, які мають дати свят 2004 року і файл з фактами, які мають дати вихідних днів 2004 року. Сформувати новий файл з фактами, які мають дати, які є одночасно святковими і вихідними днями.

Global Facts

nondeterm dni1(string)

nondeterm dni2(string)

facts-new

dnis(string)

Predicates

nondeterm sort()

Goal

consult ("a.txt"),

consult ("b.txt"),

sort(),save("c.txt",new).

Clauses

sort():-dni1(A1), dni2(A1), assert (dnis(A1)), fail.

sort().

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

include "lab1.inc"

domains/* раздел описания доменов (пользовательские типы)*/

name=string

price=real

ageon=integer

ageoff=integer

prices=price*%список

predicates/* раздел описания предикатов */

Toy(name,price,ageon,ageoff)

Max(prices,real)

3

Print410

clauses/* раздел описания предложений */

Toy("Giraffe",1.95,6,10).

Toy("Wood Louse",15.80,0,3).

Toy("Lego",40.60,8,10).

Toy("King-Kong",92.80,4,10).

Toy("Duck",5.60,4,10).

Toy("Ball",45.60,4,10).

Toy("Iguana",20.08,4,10).

Print410:-Toy(Nam,Pri,4,10),

write("+ ", Pri, " ", Nam),

nl, fail.

Print410.

Max([X],X).

Max([H|Tail],H):-Max(Tail,M),H<M,!.

Max([_|Tail],M):-Max(Tail,M).

goal/* раздел внутренней цели*/

findall(Price,Toy(_,Price,4,10),L),

Max(L,X),

Toy(Name,X,4,10),

write("Игрушки для детей от 4 до 10:"),nl,

write(" Цена Наименование"),nl,

Print410,

write("Самая дешевая игрушка - \"", Name,"\" (",X,")."),nl.

Дан файл з фактами, які мають дати свят 2004 року і файл з фактами, які мають дати вихідних днів 2004 року. Порахувати кількість святкових днів в році. Можливий збіг святкового дня з вихідним, такі дні не рахуйте.

domains

date=integer

month=integer

facts -holy

holiday(date,month,integer)

single count(integer)

facts -week

weekend(date, month)

predicates

nondeterm Coi(date,month)%дата выходного

nondeterm Del

nondeterm Do(date)

goal

Consult("H:\\University\\FLP\\Labs\\Lab1\\Lab1b\\Obj\\holi.dat",holy),

Consult("H:\\University\\FLP\\Labs\\Lab1\\Lab1b\\Obj\\week.dat",week),

Del,

Do(N),

write("Праздников в году ",N, " (праздники, совпадающие с выходными не

учитываются).").

clauses

count(0).

Coi(Dat,Mont):-retract(holiday(Dat,Mont,_),holy).

Del:-weekend(D,M),

Coi(D,M),

fail.

Del.

Do(N):-holiday(_,_,_),

count(N),

N1=N+1,

assert(count(N1),holy),

fail.

Do(N):-count(N).

Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. З’ясувати, чи є пасажир, багаж якого має тільки одну річ, з вагою більше загальної середньої ваги речей всіх пасажирів. Знайти тих пасажирів у яких багаж має більше речей чим одна, але легше загальної середньої ваги речей.