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

ЕЛЕМЕНТАРНІ ПРОГРАМИ НА ПРОЛОЗІ. ФАКТИ І ПРАВИЛА

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

1: Include "bak-knish.Inc"

facts

single count(integer,real)

predicates

nondeterm bag(integer,integer,integer)

nondeterm Do()

goal

Do().

clauses

count(0,0).

bag(1,4,4).

bag(4,5,2).

bag(8,3,8).

Do():- bag(_,_,Ves),count(N,V),N1=N+1,V1=V+Ves,assert(count(N1,V1)),fail.

Do():- count(N,V),Ves=V/N,write(Ves),nl,bag(Num,Kol,Ves1),Sv=Ves1/Kol,abs(Ves-Sv)<3,write(Num),fail.

Do().

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

include "lab1-2.inc"

Facts

server(string,string,string)

Predicates

nondeterm Do(string)

Goal

write("Input name of server "),readln(Name),Consult ("2.txt"),Do(Name),nl.

Clauses

Do(Name):-server(Name,Adress,Lang),write (Name," ",Adress," ",Lang).

Do(_).

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

include "epic.inc"

Facts

single count(integer)

single cost_all(integer)

%%%%%

Menu(string, string, string)

predicates

nondeterm Epic(integer)

nondeterm Toy(string, integer, integer, integer)

%%%%%

nondeterm get_menu()

clauses

count(0).

cost_all(0).

Toy("LineageII",9999,14,17).

Toy("WOW",38900,14,17).

Toy("tank",1000,3,14).

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

Epic(Bal):-toy(_,B,_,_),B>Bal, cost_all(B1), B2=B1+B, assert(cost_all(B2)), fail.

Epic(_):-toy(N,B,_,_),write(N, " - ", B),nl,fail.

Epic(_):-write("###"),nl,

count(N),write("All toys count => ", N),nl,cost_all(B),write("Total cost => ",B),nl,

M=B div N,write("Midel cost => ",M),nl.

%%%%%

Get_menu():-menu(A,"meet","tea"),/* C="tea", B="meet", */write (A, " ", "meet", " ", "tea"), nl, fail.

Get_menu():-write("----------------------------------------"),nl.

goal

epic(1),write("----------------------------------------"),nl,

Consult ("info.dat"), get_menu().

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

include "iceman1.inc"

global Facts

single passagir1(integer, integer, real)

single passagir2(integer, integer, real)

single ves(real)

predicates

nondeterm vyvod

nondeterm Passagir(integer, integer, real)

nondeterm Do

clauses

Passagir(52, 24, 0.12).

Passagir(83, 8, 0.3).

Passagir(17, 1, 0.20).

Passagir(17, 8, 1.0).

Passagir(180, 4, 0.5).

Passagir1(0, 0, 0).

Passagir2(0, 0, 0).

ves(0).

Do:- Passagir(_, _, Z), ves(Zr), Z1=Zr+Z, assert(ves(Z1)), fail.

Do:- ves(Zr), Passagir(X, Y, Z), passagir(X1,Y1,Z1), Y=Y1, X1><X, Zr-Z<5, assert(passagir1(X,Y,Z)),assert(passagir2(X1,Y1,Z1)), fail.

Do:- passagir1(X,Y,Z),passagir2(X1,Y1,Z1), write(X," ",Y," ",Z),nl, write(X1," ",Y1," ",Z1),nl.

vyvod:- ves(Z1), write("TOTAL WEIGHT: ",Z1),nl.

goal

Do, vyvod.

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

include "lab1zad2.inc"

facts-zadacha2

server(string, string, string)

server1(string, string, string)

predicates

nondeterm sort

nondeterm min(string)

clauses

sort:-server(X, _, _), Min(X), sort.

sort.

min(X):- server(X1, _, _), X1 < X, min (X1).

min(X):-server(X, Y, Z),

assertz(server1(X, Y, Z),zadacha2), retract(server(X, Y, Z),zadacha2).

goal

Consult("in.txt", zadacha2), sort, save("out.txt", zadacha2).

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