Форум программистов, компьютерный форум, киберфорум
Наши страницы
Prolog
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
#1

Решить следующие задачи

18.03.2012, 19:11. Просмотров 1174. Ответов 6
Метки нет (Все метки)

Решить следующие задачи:
а) составить список, состоящий из натуральных чисел, лежащих на числовой оси между двумя заданными;
б) подсчитать количество отрицательных, положительных и нулевых элементов списка;
в) инвертировать список;
г) утроить список.

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
domains
ilist=integer*
i=integer 
predicates
gen(i,i,i,ilist).
vvod(i,i,i).
clauses
vvod(N,M,K):-write("vvedite M:"),readint(M),nl,
write("vvedite K:"), readint(K),nl,write("vvedite Kol-vo:"),readint(N).
gen(0,_,_,[]):-!.
gen(N,M,K,[H|Tail]):-N1=N-1, gen(N1,M,K,Tail),
        A=K+1-M, random(A,B), H=B+M.
   
goal
vvod(N,M,K),gen(N,M,K,L).
Пока решил только задание А. Прошу помощь с остальными заданиями.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.03.2012, 19:11
Ответы с готовыми решениями:

Помогите решить 2 задачи
Здравствуйте. Помогите пожалуйста решить 2 задачи в Strawberry prolog:...

Написать правила, определяющие следующие отношения
Помогите плугу:-| Напишите правила, определяющие следующие отношения: •...

Напишите правила, определяющие следующие отношения
• дочь, сын; • муж, жена (исходя из наличия общих детей); • внук, бабушка.

Элементы списка, следующие за заданным числом
Если кто знает как решать задачи на Prolog(е) подскажите мне =) две задачки:...

Решить следующие примеры
Помогите решением данных примеров. Правила форума: 5.16. Запрещено создавать...

6
Грымзик
2477 / 1454 / 34
Регистрация: 14.09.2009
Сообщений: 2,742
18.03.2012, 20:50 #2
Читайте правила форума - на каждую задачу отдельная тема. А главное - пользуйтесь поиском. Б и В точно встречались. Так что будем считать, что в данной теме обсуждается только Г.
Что значит "утроить"? Домножить на 3 или повторять элементы по 3 раза?
1
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
18.03.2012, 21:09  [ТС] #3
Цитата Сообщение от Грымзик Посмотреть сообщение
Читайте правила форума - на каждую задачу отдельная тема. А главное - пользуйтесь поиском. Б и В точно встречались. Так что будем считать, что в данной теме обсуждается только Г.
Что значит "утроить"? Домножить на 3 или повторять элементы по 3 раза?
К примеру список (0 1 2 3) после утроения выглядит так: (0 1 2 3 0 1 2 3 0 1 2 3).
Тобиш повторять элементы по 3 раза.
0
Грымзик
2477 / 1454 / 34
Регистрация: 14.09.2009
Сообщений: 2,742
18.03.2012, 21:20 #4
p(A,A3):-append(A,A,A2),append(A2,A,A3).
Предикат append стандартен, также можете поиском воспользоваться.
1
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
18.03.2012, 22:55  [ТС] #5
Вот если кому то понадобится, моё решение:

Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
domains
ilist=integer*
i=integer 
predicates
gen(i,i,i,ilist).
vvod(i,i,i).
print(i,i,i,ilist).
invert(ilist,ilist).
peremesh(ilist,ilist,ilist).
p(ilist,ilist).
clauses
vvod(N,M,K):-write("vvedite M:"),readint(M),nl,
write("vvedite K:"), readint(K),nl,write("vvedite Kol-vo:"),readint(N).
gen(0,_,_,[]):-nl,!.
gen(N,M,K,[H|Tail]):-N1=N-1, gen(N1,M,K,Tail),
        A=K+1-M, random(A,B), H=B+M.
   
   print(0,0,0,[]):-!.
print(Neg,Poz,Nll,[H|T]):- H<0,!,print(Neg1,Poz,Nll,T),Neg=Neg1+1.
print(Neg,Poz,Nll,[H|T]):-H=0,!,print(Neg,Poz,Nll1,T),Nll=Nll1+1.
print(Neg,Poz,Nll,[H|T]):-H>0,!,print(Neg,Poz1,Nll,T),Poz=Poz1+1.   
 
 
invert(L, Otvet):-peremesh(L, [], Otvet). 
peremesh([ ], Otvet, Otvet):- !. 
peremesh([H|T], Novspis, Otvet):- peremesh(T, [H|Novspis], Otvet).
 
p([X|L],[X,X,X|L1]) :- p(L,L1).
p([],[]).
   
goal
vvod(N,M,K),gen(N,M,K,L),print(Neg,Poz,Nll,L),invert(L, Otvet),p(L,L1).
0
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
25.03.2012, 23:17  [ТС] #6
возникла ещё одна задача переделать эту программу под визуальное оформление(с формой и компонентами). Проблема в том что там отличается процесс написания программы, а до этого с визуальным оформлением я не работал. Прошу помощи, буду очень благодарен!
0
skreggi
0 / 0 / 0
Регистрация: 25.11.2010
Сообщений: 16
27.03.2012, 17:07  [ТС] #7
вопрос решился, можно считать закрытым.
0
27.03.2012, 17:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.03.2012, 17:07

Как решить следующие задания в Python?
Нужна помощь в решении задач: 1. Дано натуральное число. Определить будет ли...

Объясните пожалуйста ,что делают следующие задачи:
Объясните пожалуйста ,что делают следующие задачи: 1 var a=new...

Используя рекурсивные функции, сделать следующие задачи:
1)Подсчитать количество цифр в заданном числе. Выполнить следующие...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru