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

Задачи 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 tadalafil bestellen buy brand cialis online canada cialis generique canada buy generic cialis online canada
cialis tadalafil bestellen buy brand cialis online canada cialis generique canada buy generic cialis online canada