Главная » Контрольные

Задачи Visual Prolog

Задание 1

predicates
Vozvedenie(unsigned,real)
Vozvedenie(unsigned,real,unsigned,real)
clauses
Vozvedenie(Kol,St):-
Vozvedenie(Kol,St,0,1).
Vozvedenie(Kol,St,Kol,St):-!.
Vozvedenie(Kol,St,I,P):-
Isxodnoe = I+1,
Poluchennoe= P*2,
write(Isxodnoe,"\t", Poluchennoe, '\r'),
Vozvedenie(Kol, St, Isxodnoe, Poluchennoe).
goal
Vozvedenie(10,X).


Задание 2

domains
name = string
league = integer
predicates
go
match(name,league)
challenges(name,league)
play(name,name)
igrok(name,league)
clauses
go:-
igrok(A,B), match(A,B).


match(A,B):-
challenges(A,B),
B1=B-1,
challenges(A,B1).


challenges(A1,B2):-
igrok(A2,B2),
play(A1,A2),!.	


play(A,A):-!.
play(A1,A2):-
write(A1," versus ",A2),nl,fail.
igrok("Tany",2).
igrok("Roma",1).
igrok("Sveta",3).
igrok("Pavel",2).
igrok("Ivan",1).
igrok("Dima",3).
goal
go.
 

Задание 3.1

Напишите подходящие определения доменов с помощью основных объектов Visual Prolog, которые могут быть использованы в каталоге музыкальных пьес. Типичное содержимое каталога: Show: West Side Story (Пьеса: Вестсайдская история) Lirics: Stephen Sondheim (Текст: Стефан Сондхейм) Music: Leonard Bernstein (Музыка: Леонард Бернстайн)

 

domains
show = string
lyrics = string
music = string


predicates
catalog(show, lyrics, music) - nondeterm (o,o,o)


clauses
catalog("West Side Story","Stephen Sondheim","Leonard Bernstein").


goal
catalog(Show, Lyrics, Music).

 

Задание 3.2

Измените программу ch06e01.pro так, чтобы предикат country имел 2 характеристики - name (название) и population (население) - и на печать выводились только названия стран, имеющих население более 10 миллионов (1e+7).

predicates
country(symbol,integer) - nondeterm (o,o)
print_countries - procedure ()


clauses
country("England", 15000000).
country("France", 7000000).
country("Germany", 3000000).
country("Denmark", 57000000).


print_countries:-
country(X,Y),
Y>1e+7,
write(X), /* write the value of X */
nl, /* start a new line */
fail.
print_countries.


goal
print_countries.

 

  

 

 

Задание 4.1

Запишите предикат с названием sum_of, который работает так же, как length_of, за исключением того, что он работает со списком чисел и суммирует их. Например, целевое утверждение sum_of([1, 2, 3, 4], S) должно присваивать S значение 10.

 

domains
list = integer*


predicates
sum_of(list, integer,integer) - procedure(i,o,o)
run - procedure()


clauses
sum_of([], 0, 0).
sum_of([H|T], S, N):-
sum_of(T, Sum, N1),
S = Sum+H,
N=N1+1.


run:-
sum_of([1, 2, 3, 4], S, N),
Ave=S/N,
write("Summa=", S),nl,
write("Kol-vo=", N),nl,
write("average=", Ave),nl.


goal
run.

Задание 4.2

Добавьте утверждения в разделы domain и predicate программы ch07e06.pro таким образом, чтобы вы могли использовать member для установки принадлежности числа числовому списку.

 

domains
namelist = name*
name = integer


predicates
member(name,namelist) - nondeterm (i,i)


clauses
member(Name,[Name|_]).
member(Name,[_|Tail]):-
member(Name,Tail).


goal
member(4,[1,2,3]).

 


Задание 4.3

Запишите предикат real_average, который вычисляет среднее значение всех элементов списка действительных чисел.

 
domains list = integer* 
predicates sum_of(list, integer, integer) - procedure (i,o,o) run - procedure () 
clauses sum_of([], 0, 0). sum_of([H|T],Sum,N):- sum_of(T,S1,N1), Sum = H + S1, N = N1 + 1. 
run:- sum_of([1,2,3,4],Sum,N), Ave = Sum/N, write("Summa=", Sum),nl, write("Kolichestvo=", N),nl, write("Average=", Ave),nl. 
goal run.
 

Задание 7.1

 

predicates
factorial(unsigned,real,real,real)
factorial(unsigned,real,integer,real,real,real)


clauses
factorial(N,FactN,FactN,FactN):-
factorial(N,FactN,-15,1,1,1).


factorial(N,FactN,N,FactN,FactN,FactN):-!.
factorial(N,FactN,I,P1,P2,P3):-
NewI = I+15,
NewI<361,
NewP1 = cos(NewI*3.14159265/180),
NewP2 = sin(NewI*3.14159265/180),
NewP3 = tan(NewI*3.14159265/180),
write(NewI,"\t", NewP1,"\t", NewP2,"\t", NewP3),nl,
factorial(N, FactN, NewI, NewP1,NewP2,NewP3).


goal
factorial(24,X,Y,Z).

 

Задание 7.2

 

predicates
solve(real,real,real) - procedure (i,i,i)
reply(real,real,real) - procedure (i,i,i)
mysqrt(real,real,real) - procedure (i,i,o)
equal(real,real) - determ (i,i)


clauses
solve(A,B,C):-
D=B*B-4*A*C,
reply(A, B, D), nl.


reply(_,_,D):-
D < 0,
write("Нет решения"),!.
reply(A,B,D):-
D=0,
X=-B/(2*A),write("x=", X),!.
reply(A,B,D):-
mysqrt(D,D,SqrtD),
X1=(-B+SqrtD)/(2*A),
X2 = (-B - SqrtD)/(2*A),
write("x1 = ", X1," and x2 = ", X2).


mysqrt(X,Guess,Root):-
NewGuess = Guess-(Guess*Guess-X)/2/Guess,
not(equal(NewGuess,Guess)), !,
mysqrt(X,NewGuess,Root).


mysqrt(_,Guess,Guess).


equal(X,Y):-
X/Y >0.99999,
X/Y < 1.00001.


goal
write("A="), readreal(A),
write("B="), readreal(B),
write("C="), readreal(C),
write(A, "x^2+", B, "x", "+", C, "\n\r"),
solve(A,B,C).
 	
cialis canada free offer cialis tadalafil bestellen buy brand cialis online canada cialis generique canada buy generic cialis online canada