0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 32
1

В списке List записаны в порядке возрастания номеров первые N элементов последовательности

26.03.2010, 22:19. Показов 1624. Ответов 15
Метки нет (Все метки)

posl4(N,List). в списке List записаны в порядке возрастания номеров первые N элементов последовательности 6/99, 9/94, 12/89, 15/84, 18/79, ,... с нечетными номерами.

тут последовательность (3*n+3)/(99-5*n).
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.03.2010, 22:19
Ответы с готовыми решениями:

Вывести порядковые номера наибольших чисел последовательности в порядке возрастания их номеров
Ввести последовательность натуральных чисел, в конце которой 0. Не сохраняя всей последовательности...

Упорядочить первые 10 элементов в порядке возрастания, а другие в порядке убывания
сформировать случайным образом массив из 20 элементов. Упорядочить первые 10 в порядке возрастания,...

Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в порядке убывания
Привет. Первые десять элементов массива М(30) отсортировать в порядке возрастания, а остальные в...

Вывести вначале элементы массива с нечетными номерами в порядке возрастания номеров, затем - элементы с четными в порядке убывания номеров
дан массив А размера N.вывести вначале элементы с нечетными номерами в порядке возрастания...

15
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
27.03.2010, 01:00 2
Вы или формулу неправильную указали, или последовательность неправильную... Я сделала прогу, рассчитанную на то, что формула правильная
Prolog
1
2
3
4
p(N,List):-N1 is N*2-1, p(1,N1,List).
 
p(N,N,[A/B]):-A is 3*N+3, B is 99-5*N.
p(K,N,[A/B|Tail]):-M is K+2,p(M,N,Tail),A is 3*K+3, B is 99-5*K.
?- p(3,L).
L = [6/94, 12/84, 18/74]
2
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 32
27.03.2010, 09:49  [ТС] 3
не могли бы вы первую строчку прокомментировать
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
27.03.2010, 22:08 4
Вы имеете в виду эту p(N,List):-N1 is N*2-1, p(1,N1,List). ? Нам надо рассмотреть все элементы с индексами от 1 до 2N-1, и выбрать из них только с нечетными индексами. Первая строка задает диапазон поиска.
1
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
27.03.2010, 22:47 5
а если все условие точно такое же, только с небольшим отличием:

в списке List записаны в порядке возрастания
номеров первые N элементов последовательности 6/99, 9/94, 12/89, 15/84,
18/79, ,... сначала с нечетными номерами, затем с четными
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
27.03.2010, 22:57 6
Prolog
1
2
3
4
5
p(N,List):-p(1,N,Nechetnie),p(2,N,Chetnie),append(Nechetnie,Chetnie,List).
 
p(N,N,[A/B]):-A is 3*N+3, B is 99-5*N.
p(K,N,[A/B]):-K=:=N-1,A is 3*K+3, B is 99-5*K.
p(K,N,[A/B|Tail]):-M is K+2,p(M,N,Tail),A is 3*K+3, B is 99-5*K.
0
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
27.03.2010, 23:16 7
Грымзик, а что значит append?
это какой-то синтаксис языка?
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
27.03.2010, 23:23 8
append - предикат слияния двух списков. В SWI прологе он встроен. А если Вы пишите не на нем, то опишите так
Prolog
1
2
append([],B,B).
append([H|Tail],B,[H|NewTail]):-append(Tail,B,NewTail).
2
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
28.03.2010, 21:56 9
Грымзик,
при задании запроса p(3,L). (к примеру) Пишет ошибку стэка. Возможно ваша программа работает только в swi прологе.
P.S. У меня ARITY Prolog
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
28.03.2010, 22:05 10
Вы определение предиката append добавили? Арити пролога у меня нет, но я проверила на клубничном - работает, а это уже показатель, что никаких наворотов в языке прога не требует.
0
0 / 0 / 0
Регистрация: 17.03.2010
Сообщений: 32
31.03.2010, 13:37  [ТС] 11
не подскажите как сязаны в случае p(K,N,List):K,N,List.
и чему равно p(2,L).

Добавлено через 4 минуты
если не трудно прокомментируйте последние две строчки программы
0
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
01.04.2010, 10:09 12
p(K,N,[A/B]):-K=:=N-1,A is 3*K+3, B is 99-5*K.
p(K,N,[A/B|Tail]):-M is K+2,p(M,N,Tail),A is 3*K+3, B is 99-5*K.

прокомментируйте пожалуйста эти строчки
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
01.04.2010, 14:42 13
p(K,N,[A/B]):-K=:=N-1,A is 3*K+3, B is 99-5*K. Если K=N-1, то это последняя дробь которую надо вычислить, поэтому вычисляем ее и возвращаем список, хранящий один элемент - эту самую дробь.
p(K,N,[A/B|Tail]):-M is K+2,p(M,N,Tail),A is 3*K+3, B is 99-5*K. Если же еще не последняя, то увеличиваем индекс на 2 (т.к надо только с нечетными номерами), рекурсивно находим список из всех следующих необходимых дробей, вычисляем текущую дробь и вставляем ее как голову найденного списка.
1
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
01.04.2010, 23:41 14
Грымзик,
связь между элементами этого отношения p(K,N,list) , что K,N являются номерами элементов списка list?
0
2501 / 1475 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
02.04.2010, 00:07 15
List - это ответ, K-индекс текущего элемента, т.е того, который мы сейчас высчитываем, а N-индекс самого последнего элемента, на котором нам надо останавливаться.
0
0 / 0 / 0
Регистрация: 16.11.2009
Сообщений: 32
02.04.2010, 13:42 16
блин преподу все объяснил, он докопался говорит как связаны между собой отношением K,N,List , на все мои объяснения говорит что ты мол процесс описываешь, а нужно как связаны
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.04.2010, 13:42

Упорядочить в порядке возрастания первые N элементов массива
Задано массив чисел Q(y). Определить количество N отрицательных элементов массива и упорядочить в...

Упорядочить первые n элементов данного ряда в порядке возрастания (Pascal -> С++)
Упорядочить первые n элементов данного ряда в порядке возрастания. Напечатать эти элементы в...

Дан массив A размера N. Вывести его элементы с удвоением их номеров в порядке возрастания номеров: A1, A2, A4, A8,…Условный оператор не использовать.
помогите с задачей . буду очень благодарен ... • Дан массив A размера N. Вывести его элементы с...

Перебор элементов в List в порядке возрастания поля, содержащегося в элементе
есть структура: public struct MySrtuct { public int i; } есть List:


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

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

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